Azure Automation Runbook通过Webhook触发失败提示参数列表缺少参数
问题根因
Azure Automation Webhook触发Runbook时,会将Webhook名称、请求头、请求体等信息以JSON字符串的形式传入WebhookData参数。你将该参数声明为[object]类型,PowerShell解析传入的JSON内容时,会把JSON外层的{}误识别为脚本块边界,最终触发参数列表缺失的报错。
可行解决方案
按以下步骤修改即可解决问题:
- 调整Runbook的参数定义,将
WebhookData的类型从[object]改为[string],修改后的参数块如下:
Param ( [parameter (Mandatory=$false)] [string]$WebhookData )
如果后续需要用到Webhook传递的自定义数据,可以在参数块后新增JSON转换逻辑:
# 按需添加,不需要使用Webhook传参可以忽略这段 if ($WebhookData) { $WebhookObj = $WebhookData | ConvertFrom-Json # 可通过$WebhookObj.RequestBody获取POST请求传入的请求体内容 }
- 保存修改后的Runbook,执行发布操作,新代码才会被Webhook调用生效。
- 如果你完全不需要用到Webhook传递的任何参数,也可以直接删除整个Param参数块,同样能解决参数解析报错问题,且不影响原有停止ACI的逻辑运行。
- 重新触发Webhook验证,此时任务不会再报参数相关错误。
内容的提问来源于stack exchange,提问作者Michał
相关产品推荐
相关产品推荐

