我正在使用command1.ps1脚本在目标VM上安装Azure自定义脚本扩展并执行命令2.ps1。 command2.ps1应该运行一个脚本(即在ScriptBlock内)作为域管理员(因此为-Credential $Credentials
)。当我手动运行command2.ps1并输入$ domainAdminName和$ domainAdminPassword时,它可以工作,但是通过command1.ps1运行时,它不起作用。也许问题是由运行命令2.ps1作为系统帐户的Azure自定义脚本扩展引起的?请帮我制作脚本。 command1.ps1:Azure自定义脚本扩展。以另一个用户身份执行脚本
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
command2.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
谢谢。但对于我们的情况PowerShell更好。 – WinBoss