首页 > 解决方案 > 无法将“System.String”类型的值转换为“System.Collections.Hashtable”类型

问题描述

在 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"
.....

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

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

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

标签: azurepowershellazure-devops

解决方案


在网上搜索了一些之后,我发现了我的错误:

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

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

推荐阅读