I have a powershell script runbook in Azure Automation account (tested with Powershell 5.1 and 7.2).
This script needs Parameters:
#set arguments
param(
[string]$Origin,
[string]$title,
[string]$Description
)
I can execute the script directly in Azure and provide my parameters. But when I run a script to trigger the webhook of the runbook and provide the parameters, then no parameters are parsed in the script. I do this by the following powershell script:
# Define the parameters
$params = @{
"ORIGIN" = "value1"
"TITLE" = "value2"
"DESCRIPTION" = "value3"
}
# Convert the parameters to a JSON string
$jsonParams = $params | ConvertTo-Json
try {
# Invoke the webhook
Invoke-RestMethod -Method Post -Uri $webhookUrl -Body $jsonParams -ContentType "application/json"
} catch {
Write-Host "Error: $_"
}
The webhook is triggered with the following input in the runbook logs:
{"WebhookName":"CreateItem","RequestBody":"{\r\n \"TITLE\": \"value2\",\r\n \"DESCRIPTION\": \"value3\",\r\n \"ORIGIN\": \"value1\"\r\n}","RequestHeader":{"Connection":"Keep-Alive","Host":"0117e8aa-9b60-4cb6-b844-2f558f86d135.webhook.we.azure-automation.net","User-Agent":"Mozilla/5.0","x-ms-request-id":"cdb71f35-c396-4f05-801a-b4cc155c146b"}}
When I log the parameters in the script like follows:
Write-Output "Using $Origin as my the origin"
Write-Output "Using $title as the title"
Write-Output "Using the following description: $Description"
Then this is the output:
Using as my the origin
Using as the title
Using the following description:
I am out of ideas what to do, please help :)
I figured it out, apparently you need to read the sended data from the $webhookData.
The runbook should include:
param
(
[Parameter(Mandatory = $false)]
[object] $WebhookData
)
$Inputs = ConvertFrom-Json $webhookdata.RequestBody
$origin = $Inputs.origin
$title = $Inputs.title
$Description = $Inputs.Description
This will read the webhookdata and converts to requestbody to readable content.