【发布时间】:2020-06-09 12:12:19
【问题描述】:
我在 Rundeck 中定义了一个 webhook 来运行特定的作业。该作业定义了 3 个选项:${option.VMName}、${option.CPU} 和 ${option.Memory}。作业本身定义为本地 powershell 脚本并执行为:powershell ${scriptfile} ${option.VMName} ${option.CPU} ${option.Memory}。这是经过测试的并且工作正常。
我现在想调用 webhook POST URL,以便在定义这些选项的情况下远程触发作业(从 Web 仪表板,使用 PowerShell)。我尝试将选项添加到 URL 的末尾,但未成功:
http://mywebhookuri#myjobname?opt.VMName=$VMName&opt.CPU=$CPU&opt.Memory=$Memory
http://mywebhookuri#myjobname?VMName=$VMName&CPU=$CPU&Memory=$Memory
以下 PowerShell 代码用于调用 webhook:
$WebHookURI = "http://mywebhookuri#myjobname"
$header = @{}
$header.add("Content-Type","text/plain")
$body = @{} | ConvertTo-Json
$result = Invoke-RestMethod -Method Post -Uri $WebHookURI -Body $body -Headers $header
webhook 插件和运行作业用法的文档声明“插件接收的 JSON 可用于提供选项、节点过滤器和运行身份用户”,但没有显示任何一个的明显例子。
如何成功地将这些选项传递给 webhook URL?
【问题讨论】:
-
-Body需要一个对象,但您发送的是一个字符串。删除| ConvertTo-Json并仅使用$body = @{}来表示空主体。使用$body = @{VMName="xyz"; CPU="cpu"; Memory ="Memory"}传递变量
标签: json powershell rest rundeck