代码之家  ›  专栏  ›  技术社区  ›  WinBoss

Azure自定义脚本扩展。作为另一个用户执行脚本

  •  3
  • WinBoss  · 技术社区  · 7 年前

    -Credential $Credentials ). 当我运行command2时。ps1手动输入$domainAdminName和$domainAdminPassword,它可以工作,但在通过command1运行它时。ps1它不工作。问题可能是由运行command2的Azure自定义脚本扩展引起的。ps1作为系统帐户?请帮我把剧本做好。 命令1.ps1:

        param
    (
        [Parameter(Mandatory)]
        [String]$resourceGroupName,
    
        [Parameter(Mandatory)]
        [String]$targetVMname,
    
        [Parameter(Mandatory)]
        [String]$vmLocation,
    
        [Parameter(Mandatory)]
        [String]$FileUri,
    
        [Parameter(Mandatory)]
        [String]$nameOfTheScriptToRun,
    
        [Parameter(Mandatory)]
        [String]$customScriptExtensionName,
    
        [Parameter(Mandatory)]
        [String]$domainAdminName,
    
        [Parameter(Mandatory)]
        [String]$domainAdminPassword
    
    )
    
    Set-AzureRmVMCustomScriptExtension -Argument "-domainAdminName $domainAdminName -domainAdminPassword $domainAdminPassword" `
        -ResourceGroupName $resourceGroupName `
        -VMName $targetVMname `
        -Location $vmLocation `
        -FileUri $FileUri `
        -Run $nameOfTheScriptToRun `
        -Name $customScriptExtensionName
    
    Remove-AzureRmVMCustomScriptExtension -Force `
        -ResourceGroupName $resourceGroupName `
        -VMName $targetVMname `
        -Name $customScriptExtensionName
    

    命令2.ps1:

        param
    (
        [Parameter(Mandatory)]
        [String]$domainAdminName,
    
        [Parameter(Mandatory)]
        [String]$domainAdminPassword
    
    )
    
    $domainAdminPasswordSecureString = ConvertTo-SecureString -String $domainAdminPassword -AsPlainText -Force
    $DomainCredentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $domainAdminName, $domainAdminPasswordSecureString
    
    Invoke-Command -ComputerName localhost -ScriptBlock {
    Start-Transcript C:\transcript1.txt
    New-Item C:\111.txt 
    Stop-Transcript
    } -Credential $DomainCredentials
    

    https://i.stack.imgur.com/RKlZo.png https://i.stack.imgur.com/XL28M.png

    2 回复  |  直到 7 年前
        1
  •  3
  •   Sa Yang    7 年前

    问题可能是由Azure自定义脚本扩展运行引起的 command2.ps1作为系统帐户?

    enter image description here

    有关了解Azure自定义脚本扩展的更多信息,请参阅 this article .

    请帮我把剧本做好。

    系统帐户 this link .

        2
  •  1
  •   4c74356b41    7 年前

    "properties": {
        "publisher": "Microsoft.Powershell",
        "type": "DSC",
        "typeHandlerVersion": "2.20",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "configuration": {
                "url": "url",
                "script": "script.ps1",
                "function": "function"
            },
            "configurationArguments": {
                "regular": "arguments"
            }
        },
        "protectedSettings": {
            "configurationArguments": {
                "DomainCredentials": {
                    "userName": "user",
                    "password": "password"
                }
            }
        }
    

    在DSC配置中添加如下参数:

    [Parameter(Mandatory)] # doesn't have to be mandatory, just copy pasting
    [System.Management.Automation.PSCredential]$DomainCredentials,
    

    模板中的参数名称必须与dsc中的参数名称匹配。您可能可以使用powershell找到类似的结果。我个人从未尝试过,但这应该是可能的。