无法将类型“ System.String”的值转换为类型“ System.Collections.Hashtable”

时间:2019-03-25 17:30:17

标签: azure powershell azure-devops

在Azure Devops中,我试图运行一个Azure Powershell内联脚本块:

Invoke-AzVMRunCommand -ResourceGroupName xxx-Name xxx -CommandId 'RunPowerShellScript' -ScriptPath $env:SYSTEM_DEFAULTWORKINGDIRECTORY/_alias/xxx.ps1 -Parameter $env:xxx -Verbose

如您所见,我正在将参数传递给xxx.ps1脚本。这只是xxx.ps1脚本的一小部分内容:

Param(
[string]$xxx
)

#create AD Group
$ADGroupName = "AD" + $xxx+ "_AD"
.....

运行此代码时,我在日志中收到以下错误:

  

[错误]无法绑定参数'Parameter'。无法将类型为“ System.String”的“ valueofthevariable”值转换为类型为“ System.Collections.Hashtable”。

如何正确地将值作为参数传递? 谢谢!

1 个答案:

答案 0 :(得分:0)

经过更多在线搜索后,我发现了我的错误:

在Powershell命令Invoke-AzVMRunCommand中,我使用字符串作为Parameter的输入类型,它必须是哈希表。 我将该命令更改为以下内容:

Invoke-AzVMRunCommand -ResourceGroupName xxx-Name xxx -CommandId 'RunPowerShellScript' -ScriptPath $env:SYSTEM_DEFAULTWORKINGDIRECTORY/_alias/xxx.ps1 -Parameter @{xxx = $env:xxx} -Verbose