I'm trying to monitor failed workflows through PRTG, using a PowerShell sensor. When querying 'all workflows' from /vro/runs, it only shows me those workflows that were triggered by users. The ones that are run on schedules, by the system account, do not appear in this list. Is there any way to get to these through the API?
Thanks.
$vra = "##########.lab.local"
$Credential = get-credential
$Username = $credential.UserName.Split('@')[0]
$Domain= $credential.UserName.Split('@')[1]
$JSONPassword = $Credential.GetNetworkCredential().Password
#Get Refresh token
$URI = "https://$($vra)/csp/gateway/am/api/login?access_token"
$AuthBody = @{
username = $Username
password = $JSONPassword
# domain = $Domain
} | ConvertTo-Json
$Headers = @{
"Accept"="application/json";
"Content-Type"="application/json";
}
$Response = Invoke-RestMethod -Method POST -URI $URI -Headers $Headers -Body $AuthBody
$Refreshtoken = $Response.refresh_token
$refreshTokenBody = @{
"refreshToken" = $refreshToken
} | ConvertTo-Json
#Get Access Token
$URI = "https://" + $vra + "/iaas/api/login"
$Headers = @{
"Accept"="application/json";
"Content-Type"="application/json";
}
$accessToken = Invoke-RestMethod -Uri $URI -Method POST -Headers $Headers -body $refreshTokenBody
$accessToken = "Bearer " + $accessToken.token
#Get Workflow Runs
$Headers.Add("Authorization",$accessToken)
$URI = "https://$($vra)/vro/runs?size=200"
$WorkflowRuns = Invoke-RestMethod -Method GET -URI $URI -Headers $Headers
$WorkflowRuns
foreach ($run in $workflowruns.content) {
$startedOnDateTime = [System.DateTimeOffset]::FromUnixTimeMilliseconds($run.startedOn)
$formattedRun = [PSCustomObject]@{
Name = $run.name
RunStatus = $run.runStatus
Error = $run.errorMessage
StartedOn = $startedOnDateTime.DateTime
StartedBy = $run.startedBy
}
# Display or further process the formatted run
Write-Output $formattedRun | Where-Object {$_.RunStatus -ne 'COMPLETED'}
}