나는 command1.ps1 스크립트를 사용하여 Azure Custom Script Extension을 대상 VM에 설치하고 command2.ps1을 실행합니다. command2.ps1은 도메인 관리자 (따라서 -Credential $Credentials
)와 같은 스크립트 (ScriptBlock 내부)를 실행해야합니다. command2.ps1을 수동으로 실행하고 $ domainAdminName 및 $ domainAdminPassword를 입력하면 작동하지만 command1.ps1을 통해 실행할 때 작동하지 않습니다. 어쩌면 문제는 Azure Custom Script Extension이 command2.ps1을 시스템 계정으로 실행하는 이유입니까? 제발, 스크립트 작업을 도와주세요. 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