azure 使用参数运行Set-AzVMRunCommand命令会在目标上生成奇怪的失败文件

tp5buhyn  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(93)

我使用的是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"

注意所有额外的分号(;).
有谁能帮我弄清楚发生了什么事,因为我花了一整天的时间在这上面。
干杯拉斯

gpfsuwkq

gpfsuwkq1#

看起来这是当前Azure Powershell的多行脚本文件错误:
https://github.com/Azure/azure-powershell/issues/21131

解决方法

不要使用ScriptLocalPath参数,而是使用SourceScript参数,其中Get-Content“您的script.ps1路径”|脱线,一切都会好的。
对于-Parameter,您可能需要像下面这样重新构造哈希表:

-Parameter @{PerformDataLoad='True'; Param2='Value2'}

相关问题