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 }
这样就好了!