通过Azure API,Portal或ISE Add-On启动Runbook会产生“输入参数类型不匹配”错误

时间:2016-02-25 23:33:43

标签: powershell azure azure-resource-manager azure-automation

给出一个简单的Runbook:

workflow test
{
    [CmdletBinding()]
    param([string] $NumericString)

    write-output $NumericString
}

当使用数字值(即:5)通过Azure门户作为新作业(已发布),通过测试窗格或使用Azure自动化PowerShell ISE加载项启动时,将返回以下错误,并且执行失败。

[编辑]出于好奇,我尝试了其他一些价值观。 'true'或'false'(在ise / ui中没有引号)也会导致错误(并在引号内发送到API)。[\ edit]

  

为根活动的参数提供的值不满足   根活动的要求:'DynamicActivity':预期输入   名为'Numeric'的参数的类型'System.String'的参数值。   参数名称:rootArgumentValues

AFAIK,当我通过父Runbook,webhook等执行时,这不是一个因素。

PowerShell ISE Add-On向API发出此PUT请求: (https://management.azure.com/subscriptions/<id>/resourceGroups/<rg>/providers/Microsoft.Automation/automationAccounts/<aa>/runbooks/<rb>/draft/testJob?api-version=2015-10-31

{
    "parameters": {
        "Numeric": "5"  <-- notice it's a string
    }
}

enter image description here

2 个答案:

答案 0 :(得分:1)

这似乎是一个错误,类似于Azure Automation Error 'DynamicActivity': Expected an input parameter value of type

要解决此问题,只需将数字值包装在Portal或ISE加载项的引号中

如果您在正式SDK之外启动Runbook,您似乎需要知道为字符串参数发送数字或布尔值所需的额外转义(至少)。

这是后续PUT请求的样子(来自ISE Add-On)

{
    "parameters": {
        "Numeric": "\"5\""  
    }
}

答案 1 :(得分:1)

这是自动化门户和ISE添加的错误。对于门户网站,这应该在一周左右修复。对于ISE添加,请在此处提出错误:https://github.com/azureautomation/azure-automation-ise-addon/issues