我使用的是Set-AzVMRunCommand
命令和-Parameter
参数集。
下面是我的代码:
$VMRun = Set-AzVMRunCommand `
-ResourceGroupName $customerVirtualMachine.ResourceGroupName `
-RunCommandName "RunPowerShellScript" `
-VMName $customerVirtualMachine.Name `
-Location $customerVirtualMachine.Location `
-ScriptLocalPath "scripts\$($desinationScriptFile)" `
-DefaultProfile $ctx `
-OutputBlobUri $outputBlobUri `
-ErrorBlobUri $errorBlobUri `
-Parameter @(@{Name='PerformDataLoad'; Value='True'; }) `
-ErrorAction Stop
- 请注意上面以
-Parameter
开头的行,因为这是给我带来问题的行。*
下面是由Set- AzVMRunCommand
发送到目标虚拟机的本地脚本:
param (
[Parameter(Mandatory = $false)]
[string]
$PerformDataLoad
)
Write-Output "The value of PerformDataLoad is: $PerformDataLoad"
但是,在虚拟机上结束的脚本如下所示:
param (;
[Parameter(Mandatory = $false)];
[string]; $PerformDataLoad; );
;
;
Write-Output "The value of PerformDataLoad is: $PerformDataLoad"
注意所有额外的分号(;).
有谁能帮我弄清楚发生了什么事,因为我花了一整天的时间在这上面。
干杯拉斯
1条答案
按热度按时间gpfsuwkq1#
看起来这是当前Azure Powershell的多行脚本文件错误:
https://github.com/Azure/azure-powershell/issues/21131
解决方法
不要使用ScriptLocalPath参数,而是使用SourceScript参数,其中Get-Content“您的script.ps1路径”|脱线,一切都会好的。
对于
-Parameter
,您可能需要像下面这样重新构造哈希表: