我有一个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 )
这是问题的实际解决方案