Управляющая книга автоматизации Azure не может проанализировать данные webhookdata как объект JSON - PullRequest
0 голосов
/ 04 марта 2019

Я сильно поражен этой проблемой.Я прошу вас ответить или дать подсказку.У меня заканчиваются варианты.

Я вызываю Azure Runbook при высокой загрузке ЦП через WebHook.Моя проблема в том, что данные Runbook не декодируются должным образом.Например, строка ниже ничего не печатает.

 Write-Output $WebHookData.RequestHeader

Wheras ЕСЛИ я пытаюсь явным образом преобразовать данные в JSON, как это

*$WebhookData = ConvertFrom-Json $WebhookData*

, тогда это ошибка выброса.

ConvertFrom-Json: недопустимый примитив JSON:.В строке: 6 символов: 31 + $ WebhookData = $ WebhookData |ConvertFrom-Json

Кстати, я пытаюсь использовать книгу заданий, доступную в галерее Azure {Вертикальное масштабирование виртуальной машины Azure Resource Manager с Azure Automation}

Мой Webhook называетсяиз оповещения, созданного на виртуальной машине.

Очень странное наблюдение:

Рабочий пример WebHood (найден в примере) {"WebhookName": "test1", "RequestBody": " [ \ r \ n {\ r \ n \ "Message \": \ "Тестовое сообщение \" \ r \ n} \ r \ n ****] **** "

НеРаботает (данные отправляются при вызове Runbook из ВМ):

{"WebhookName": "test2", "RequestBody": " { \" schemaId \ ": \" AzureMonitorMetricAlert \ "} }

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

У меня была та же самая проблема, использующая следующее для получения webhookdata при использовании тестовой панели с Alert json в качестве ввода

if(-Not $WebhookData.RequestBody){

    $WebhookData = (ConvertFrom-Json -InputObject $WebhookData)
}
$RequestBody = ConvertFrom-JSON -InputObject $WebhookData.RequestBody
0 голосов
/ 04 марта 2019

Я пробовал с помощью webhook, скрипт Write-Output $WebHookData.RequestHeader должен работать нормально.

И если я использую ConvertFrom-Json $WebhookData, я могу воспроизвести вашу проблему, не зная, почему она возникла, согласно doc , $WebhookData также находится в формате JSON, еслипринято, вы можете использовать ConvertFrom-Json -InputObject $WebhookData.RequestBody, оно будет работать нормально.

Моя книга запусков :

param
(
    [Parameter (Mandatory = $false)]
    [object] $WebhookData
)

if ($WebhookData) {

    Write-Output $WebhookData.RequestHeader

    $Body = ConvertFrom-Json -InputObject $WebhookData.RequestBody
    Write-Output $Body

} else
    {
        Write-Output "Missing information";
        exit;
    }

Сценарий powershell, который я использовал для отправкиwebhook :

$uri = "https://s5events.azure-automation.net/webhooks?token=xxxxxxxxxxxx"

$vms  = @(
            @{ Name="vm01";ResourceGroup="vm01"},
            @{ Name="vm02";ResourceGroup="vm02"}
        )
$body = ConvertTo-Json -InputObject $vms
$header = @{ message="StartedbyContoso"}
$response = Invoke-WebRequest -Method Post -Uri $uri -Body $body -Headers $header
$jobid = (ConvertFrom-Json ($response.Content)).jobids[0]

Выход :

enter image description here

...