批量执行失败的Power Automate 流程

概述

Power Automate 是一个云端的服务,它可以让我们很方便地定义流程,这些流程可以根据事件触发、手工运行、被程序调用、定时运行等,设计这种流程不需要编程能力,它内置了几百个连接器(connector)可以与各种系统做对接。关于Power Automate的基本用法,请参考 https://docs.microsoft.com/zh-cn/learn/powerplatform/power-automate

要解决的问题

今天这一篇文章给大家分享的是,当Power Automate的流程运行失败后,用脚本的方式批量将其重新运行。Power Automate 会保存每个流程运行的历史,不管成功还是失败。点击进去可以看到运行的详细过程。下面是我某个运行失败的流程案例。

运行失败总是有原因的,但Power Automate 运行我们进行重新运行。但通过图形化界面,一次性最多可以重新提交10个流程

所以,如果要批量重新运行所有运行失败的流程,我们可能需要用到一点脚本技巧。我找到一个方法是这样的。

解决方案

首先,安装 m365 命令行工具,你可以通过这里的介绍进行安装 https://pnp.github.io/cli-microsoft365/user-guide/installing-cli/

然后,用如下的脚本来完成这个操作吧

# 将当前窗口默认输出文本的编码设置为UTF8(这个不是必须的,但有些 PowerShell 版本会乱码
$OutputEncoding = [Console]::OutputEncoding = New-Object System.Text.Utf8Encoding

# 登录microsoft 365
m365 login

# 获取当前用户的默认环境(environment),因为一个用户可能会有多个environment,所以这里先取的第一个
$env = m365 flow environment list --query [*].name | ConvertFrom-Json | Select-Object -First 1

# 获取当前环境下的所有流程的编号和名称
$flows = m365 flow list --environment $env --query "[*].{id:name,name:displayName}" | ConvertFrom-Json

# 请确认你要查询的流程编号,例如下面是我的例子,它会返回一系列失败的运行记录编号

$flow = "0b93ac88-0e51-4f2b-9e58-efe8c0826877"

$failedrun = m365 flow run list --flow $flow --environment $env --query "[?status =='Failed'].name" | ConvertFrom-Json

# 循环提交所有的记录

$failedrun | ForEach-Object {m365 flow run resubmit --flow $flow --environment $env --name $_ --confirm }

这样就好了!

posted @   陈希章  阅读(1043)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2009-05-24 XSLT 编译器 (xsltc.exe)
2009-05-24 网页的复制和防复制
2009-05-24 发现数据库对象的依赖关系
2009-05-24 Open Source PDF Libraries in C#
2009-05-24 在frame之间互相调用javascript函数
2009-05-24 反编译chm文件到htm格式
2009-05-24 LINQ中的group操作
点击右上角即可分享
微信分享提示