Azure自动化Runbook失败,由Webhook“参数列表中缺少参数”触发

ffdz8vbo  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(156)

我在Azure自动化帐户中放置了一个相当简单的脚本来停止Azure容器示例。当我测试它时,或者当我只是单击“开始”按钮时,我可以从门户顺利运行,不会产生错误并正确执行工作。

Param
(
  [parameter (Mandatory=$false)]
  [object]$WebhookData
)

try
{
    "Logging in to Azure..."
    Connect-AzAccount -Identity
}
catch {
    Write-Error -Message $_.Exception
    throw $_.Exception
}

$ACIs = Get-AzContainerGroup

foreach ($ACI in $ACIs)
{    
    Write-Output ("Shutting down the following Azure Container Instance:  " + $ACI.Name)
    Stop-AzContainerGroup -Name $ACI.Name -ResourceGroupName 'MY_RESOURCE_GROUP_NAME'
    Write-Output ("")
}

我创建了一个webhook来启动该脚本。每当我发送post请求来启动该脚本时,它都会失败,并显示以下错误:'''

ParserError:
Line |
| … .ps1' -WebhookData {WebhookName:XXXX,RequestB …
| ~
| Missing argument in parameter list.

我试着在邮件正文中添加一些东西,从PowerShell和Postman发送请求。我得到了JobId和状态代码202的响应。我正在寻找类似的问题,但我得到的唯一一个是没有aswer的one
有什么想法吗?

ivqmmu1c

ivqmmu1c1#

Azure自动化Runbook中的Powershell版本出现问题。使用Powershell 5.1解决了该问题。Runbook使用Powershell 7.1时似乎存在一些格式问题:链接。

pxy2qtax

pxy2qtax2#

$WebhookData变量似乎包含无效的JSON。JSON缺少名称和值周围的所有双引号。
我写了一个难看的正则表达式来“修复”$WebhookData值,将丢失的双引号加回去,这样就可以通过ConvertFrom-JSON传递字符串并得到一个可用的对象。
我确信这个正则表达式并不完美,但它适合我的特定情况,所以我现在使用它。

$Payload = $WebhookData -replace "(?<pre>[\{,])(?<name>[^:]*)", '${pre}"${name}"' -replace ":(?<value>[^\{\},]+)", ':"${value}"' | ConvertFrom-Json

相关问题