如何通过HTTP Post向PowerShell Runbook传递参数?求助
解决Azure Automation Runbook Webhook接收Power Automate参数问题
1. 修正Runbook脚本(规范输出)
先把脚本里的write替换为标准PowerShell Cmdlet,避免别名带来的潜在问题:
Param ( [Parameter (Mandatory= $true)] [String] $Name ) Write-Output "Received Name: $Name" Write-Output "Hello $Name"
2. 正确构造Power Automate的POST请求
在Power Automate的HTTP动作中按以下配置:
- 方法:
POST - URI:粘贴你的Webhook完整URL
- 请求头:添加
Content-Type,值为application/json - 请求体:使用严格的JSON结构,参数必须嵌套在
parameters对象中:
{ "parameters": { "Name": "你的测试名称" } }
如果要传入Power Automate中的动态变量,切换到表达式模式输入:
@{parameters = @{Name = variables('YourVariable')}}
3. Webhook必填参数默认值的处理
创建Webhook时,必填参数的默认值可以随便填(比如DefaultTest)——当POST请求传入参数时,Runbook会自动优先使用请求里的参数值,忽略默认值。
4. 调试与验证
运行Power Automate流程后,进入Azure Automation的Runbook作业日志,查看输出内容:
- 如果能看到
Received Name: 你的测试名称,说明参数已成功传递 - 如果仍显示默认值或空值,检查请求头是否正确、请求体结构是否符合要求
常见错误排查
- 缺少
Content-Type: application/json请求头:Automation服务无法解析非JSON格式的请求体 - 请求体结构错误:直接写
{"Name": "xxx"}不嵌套在parameters里,Runbook无法识别参数 - Power Automate中Body格式错误:可视化编辑器可能自动添加多余转义符,建议用表达式模式生成请求体
内容的提问来源于stack exchange,提问作者f2_
相关产品推荐
相关产品推荐

