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.

iStock AI Generator

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)
     }
}

Maximiliano Díaz Doglia

AI Platform Engineer & Full-Stack Developer
Building Enterprise Integrations & Automations