Utiliser PowerShell pour surveiller un flux Power Automate
Traduit de l'original en espagnol. Lire en espagnol
Dans ce tutoriel, nous allons voir comment surveiller l’état d’un flux dans Power Automate avec PowerShell. C’est utile si vous devez suivre les exécutions du flux et recevoir des alertes lorsque certaines conditions se produisent.

Se connecter à SharePoint Online
Pour commencer, vous devez vous connecter à SharePoint Online avec l’identité managée attribuée par le système. Utilisez la commande PowerShell suivante pour établir la connexion :
Connect-PnPOnline -url zerogap.sharepoint.com -ManagedIdentity
Définir les flux à surveiller
Ensuite, définissez les flux Power Automate que vous souhaitez surveiller. Pour cela, créez un dictionnaire avec le nom de chaque flux et son ID.
$flows_to_monitor = @{Audit_Log_Handler = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
Définir la cible du webhook d’alerte
Définissez la variable qui contient le webhook auquel les alertes seront envoyées. Ce webhook peut être l’URL d’un service comme Teams, Slack, etc.
$webhook = Get-AutomationVariable -Name "ExampleAlertWebhookVariable"
Obtenir les dernières exécutions
Pour chaque flux, récupérez les dernières exécutions avec la commande 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
Compter et alerter s’il y a trop de tâches en cours
Examinez chaque tâche et, si son état est « Running », incrémentez le compteur d’alertes.
foreach ($job in $monitor) {
if ($job.Properties.Status -eq "Running") {
$counter_alert++
}
}
Si plus de 5 tâches s’exécutent en même temps, une alerte est déclenchée.
write-output $counter_alert
if ($counter_alert -gt 5 ) {
Agir en cas d’alerte
Définissez ce qu’il faut faire lorsque la condition d’alerte est remplie, par exemple envoyer une notification via le webhook avec les détails du flux et de la tâche la plus récente.
$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)
}
}
Avec ce script PowerShell, vous pouvez surveiller en permanence vos flux Power Automate et être averti de tout comportement inhabituel qui pourrait nécessiter votre attention.
Exemple complet
# 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)
}
}
