我在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。
有什么想法吗?
2条答案
按热度按时间ivqmmu1c1#
Azure自动化Runbook中的Powershell版本出现问题。使用Powershell 5.1解决了该问题。Runbook使用Powershell 7.1时似乎存在一些格式问题:链接。
pxy2qtax2#
$WebhookData变量似乎包含无效的JSON。JSON缺少名称和值周围的所有双引号。
我写了一个难看的正则表达式来“修复”$WebhookData值,将丢失的双引号加回去,这样就可以通过
ConvertFrom-JSON
传递字符串并得到一个可用的对象。我确信这个正则表达式并不完美,但它适合我的特定情况,所以我现在使用它。