Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell Azure自动化错误';动态性';:应为类型为的输入参数值_Powershell_Azure - Fatal编程技术网

Powershell Azure自动化错误';动态性';:应为类型为的输入参数值

Powershell Azure自动化错误';动态性';:应为类型为的输入参数值,powershell,azure,Powershell,Azure,使用RunbookParameter脚本使用Microsoft示例并运行以下Azure Automation PowerShell时: $date = Get-Date $Params = @{"Name"="World";"Number"=1; "Date"=$date; "SayGoodBye"=$TRUE; "StringArray"="[1,'astringvalue',2]"} Start-AzureAutomationRunbook -AutomationAccountName CM

使用RunbookParameter脚本使用Microsoft示例并运行以下Azure Automation PowerShell时:

$date = Get-Date
$Params = @{"Name"="World";"Number"=1; "Date"=$date; "SayGoodBye"=$TRUE; "StringArray"="[1,'astringvalue',2]"}
Start-AzureAutomationRunbook -AutomationAccountName CMTEST -Name Sample-Using-RunbookParameters -Parameters $Params
我得到以下例外情况:

The values provided for the root activity's arguments did not satisfy the root activity's requirements:
'DynamicActivity': Expected an input parameter value of type 'System.Boolean' for parameter named 'SayGoodbye'.
'DynamicActivity': Expected an input parameter value of type 'System.DateTime' for parameter named 'Date'.
 jParameter name: rootArgumentValues
如果我查看Azure自动化作业日志,我会看到以下输入参数:

DATE Fri, 08 Aug 2014 15:26:14 GMT
NAME World
NUMBER 1
SAYGOODBYE True
STRINGARRAY [1,'astringvalue',2]

这是由于Azure Automation cmdlet中的错误造成的,该错误将在即将发布的Azure PowerShell版本中修复(如果不是下一个版本,则是下一个版本)。基本上,cmdlet应该将每个作业参数序列化为json,但当前将它们作为字符串传递

此外,一旦修复了此问题,请在代码中执行上述操作,就像您当前所做的那样:

"StringArray"="[1,'astringvalue',2]"
您需要使用适当的PowerShell阵列:

$SomeArray = @(1, "astringvalue", 2)
"StringArray"=$SomeArray

您可以使用
$
签名传递布尔值。如下图所示:

$params = @{“AZURERESOURCEGROUP”=”Infra-ResourceGroup”;”SHUTDOWN”=$TRUE}

在上面的示例中,
resourcegroup
name将作为字符串传递到
AZURERESOURCEGROUP
参数中。要传递
BOOLEAN
值,您可以使用
$TRUE
/
$FALSE

当runbook的参数被指定为字符串,但在通过UI直接启动(发布或在测试窗口中)时,使用数值执行,我会收到此错误将ISE加载项用于AA时:它会抱怨数字值与预期的字符串类型不匹配。我建议开始您自己的SO问题。但如果要将数字作为int传递,请将参数类型设置为[int]。如果要以字符串形式传递数字,请将参数类型设置为[string]。现在,通过webhook或作为子runbook(不知道作为新作业)实际执行时,只要使用ISE或门户UI启动runbook,这不是问题。IIRC只是简单地将数字用引号括起来,缓解了这个问题。