Usare PowerShell per monitorare un flusso di Power Automate
Tradotto dall'originale in spagnolo. Leggi in spagnolo
In questo tutorial impareremo a monitorare lo stato di un flusso in Power Automate usando PowerShell. È utile se devi tenere traccia delle esecuzioni del flusso e ricevere avvisi quando si verificano certe condizioni.

Collegarsi a SharePoint Online
Per iniziare devi collegarti a SharePoint Online usando l’identità gestita assegnata dal sistema. Usa il seguente comando PowerShell per stabilire la connessione:
Connect-PnPOnline -url zerogap.sharepoint.com -ManagedIdentity
Definire i flussi da monitorare
Poi definisci i flussi di Power Automate che vuoi monitorare. Per farlo, crea un dizionario con il nome di ogni flusso e il relativo ID.
$flows_to_monitor = @{Audit_Log_Handler = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
Impostare la destinazione del webhook di avviso
Imposta la variabile che contiene il webhook a cui verranno inviati gli avvisi. Può essere l’URL di un servizio come Teams, Slack, ecc.
$webhook = Get-AutomationVariable -Name "ExampleAlertWebhookVariable"
Ottenere le ultime esecuzioni
Per ogni flusso, ottieni le ultime esecuzioni con il comando get-pnpflowrun.
$flow_id_string=[String]$flow.Values
write-output $flow_id_string
$monitor=get-pnpflowrun -Environment "yyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" -Flow $flow_id_string | select -First 10
Contare e avvisare se ci sono troppi job in esecuzione
Controlla ogni job e, se lo stato è «Running», incrementa il contatore degli avvisi.
foreach ($job in $monitor) {
if ($job.Properties.Status -eq "Running") {
$counter_alert++
}
}
Se più di 5 job sono in esecuzione contemporaneamente, scatta un avviso.
write-output $counter_alert
if ($counter_alert -gt 5 ) {
Intervenire in caso di avviso
Definisci cosa fare quando la condizione di avviso è soddisfatta, per esempio inviare una notifica tramite il webhook con i dettagli del flusso e del job più recente.
$job_id=$monitor[0].id
$flow_name=[String]$flow.keys
$payload = @{"text" = "Flow Alert: at least 5 jobs are still running in the $flow_name flow. The last job execution is $job_id"}
Invoke-RestMethod -uri $webhook -method Post -Body (convertto-json -InputObject $payload)
}
}
Con questo script PowerShell puoi tenere costantemente sotto controllo i tuoi flussi di Power Automate ed essere avvisato di qualsiasi comportamento insolito che richieda la tua attenzione.
Esempio completo
# Connect using the system managed Identity
Connect-PnPOnline -url zerogap.sharepoint.com -ManagedIdentity
#### Flows to monitor ####
$flows_to_monitor = @{Audit_Log_Handler = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
$counter_alert = 0
## Alert Webhook Target ##
$webhook = Get-AutomationVariable -Name "ExampleAlertWebhookVariable"
# Check last 10 jobs for all targeted flows
foreach ($flow in $flows_to_monitor) {
# Get the last 10 runs
$flow_id_string=[String]$flow.Values
write-output $flow_id_string
$monitor=get-pnpflowrun -Environment "yyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" -Flow $flow_id_string | select -First 10
foreach ($job in $monitor) {
if ($job.Properties.Status -eq "Running") {
$counter_alert++
}
}
# If there are more than 5 jobs running at the same time. Alert.
write-output $counter_alert
if ($counter_alert -gt 5 ) {
# Do something
$job_id=$monitor[0].id
$flow_name=[String]$flow.keys
$payload = @{"text" = "Flow Alert: at least 5 jobs are still running in the $flow_name flow. The last job execution is $job_id"}
Invoke-RestMethod -uri $webhook -method Post -Body (convertto-json -InputObject $payload)
}
}
