AzureRm Runbook将多个参数传递给CustomScriptExtension-PowerShell

时间:2018-03-19 20:49:33

标签: powershell azure

我有一个Azure自动化Runbook,可在执行期间收集多个参数。这些存储用于以下部分:

Set-AzureRmVMCustomScriptExtension -ResourceGroupName $VMResourceGroupName `
    -VMName $VMName `
    -Location $Location `
    -ContainerName $ContainerName `
    -StorageAccountName $StorageAccountName `
    -StorageAccountKey $StorageAccountKey `
    -FileName $FileName `
    -Run $FileName `
    -Argument $StorageAccountKey,$Az_Client_Name,$Az_Disk_Drive,$Az_Dest_ShareName,$Az_Dest_Path `
    -Name $ScriptExtensionName 

我收到的错误如下:

启动脚本扩展...... 无法将'System.Object []'转换为参数'Argument'所需的类型'System.String'。指定的方法不是 支持的。     + CategoryInfo:NotSpecified:(:) [Write-Error],WriteErrorException     + FullyQualifiedErrorId:Microsoft.PowerShell.Commands.WriteErrorException

只有在脚本的-Argument行中传递多个项目时才会出现此错误。如果我只传递一个参数,那么错误就会消失。 我确信这是格式化的问题,但是逗号,空格,逗号和空格,似乎都没有正常工作。

编辑:有人指出这是一个重复的问题。太棒了。另一篇文章中提出的解决方案对我不起作用。解决方案是在Arguments之间使用单个空格,并在它们周围添加引号。这不起作用,因为没有传递任何参数,但上面列出的错误不再出现。

实际答案: 我检查了声称已经有答案的页面 - 它是从2017年开始的,Azure从那时起确实发生了变化。 为了真正解决这个问题我能做的事情如下......

加 $ params =“ - arg1 $ arg1 -arg2 $ arg2 -arg3 $ arg3”

然后在-Argument行中,我简单地取代了我所拥有的 -Argument $ params

然后在-FileName中被下拉到VM的脚本中,我不得不添加一个Param部分: 参数(      [参数(强制= $ true,HelpMessage =“这里有些文字”)]      [字符串] $ ARG1      )

这是问题的实际解决方案

0 个答案:

没有答案