Usando PowerShell para monitorar um fluxo do Power Automate
Traduzido do original em espanhol. Ler em espanhol
Neste tutorial vamos aprender a monitorar o status de um fluxo no Power Automate usando PowerShell. Esse processo é útil se você precisa acompanhar a execução do fluxo e receber alertas quando certas condições ocorrerem.

Conectar ao SharePoint Online
Para começar, é preciso conectar-se ao SharePoint Online usando a identidade gerenciada pelo sistema. Use o seguinte comando no PowerShell para estabelecer a conexão:
Connect-PnPOnline -url zerogap.sharepoint.com -ManagedIdentity
Definir os fluxos a monitorar
Em seguida, defina os fluxos do Power Automate que você quer monitorar. Para isso, crie um dicionário com o nome do fluxo e o respectivo ID.
$flows_to_monitor = @{Audit_Log_Handler = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
Definir o destino do webhook de alerta
Defina a variável que contém o webhook para o qual os alertas serão enviados. Esse webhook pode ser a URL de um serviço como Teams, Slack etc.
$webhook = Get-AutomationVariable -Name "ExampleAlertWebhookVariable"
Obter as últimas execuções
Para cada fluxo, obtenha as últimas execuções usando o 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
Contar e alertar se houver trabalhos demais em execução
Verifique cada trabalho e, se o status for «Running», incremente o contador de alertas.
foreach ($job in $monitor) {
if ($job.Properties.Status -eq "Running") {
$counter_alert++
}
}
Se houver mais de 5 trabalhos em execução ao mesmo tempo, um alerta é disparado.
write-output $counter_alert
if ($counter_alert -gt 5 ) {
Agir em caso de alerta
Defina o que fazer quando a condição de alerta for atendida. Por exemplo, enviar uma notificação pelo webhook com detalhes sobre o fluxo e o trabalho mais 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)
}
}
Com este script PowerShell, você pode manter um monitoramento constante dos seus fluxos no Power Automate e ficar atento a qualquer comportamento incomum que possa exigir sua atenção.
Exemplo 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)
}
}
