如何使用PowerShell为Power Automate流批量添加描述?
Power Automate 批量更新流描述的PowerShell实现方案
你提到的批量更新流描述的需求完全可以通过官方提供的PowerShell模块实现,不需要直接操作底层CRM接口也能完成,以下是两种可直接落地的路径:
方案1:基于Power Platform官方管理模块实现(推荐,稳定性最高)
这个方案是官方封装的能力,不需要手动处理Dataverse API的鉴权和请求拼接,适合绝大多数场景:
- 前置依赖安装:在PowerShell中执行以下命令安装所需模块
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell, Microsoft.PowerApps.PowerShell -Scope CurrentUser -Force -AllowClobber
- 前期准备:统一整理所有流的描述文件,建议用流ID作为文件名存储为txt格式(避免重名流匹配错误),所有文件放在同一个独立文件夹中
- 执行逻辑:
- 登录认证:执行
Add-PowerAppsAccount,在弹出的认证窗口中用拥有流编辑权限的账号登录目标Power Platform环境 - 遍历环境下的流,匹配对应描述文件后批量更新,参考脚本如下:
- 登录认证:执行
# 替换为你自己的环境ID和描述文件存放路径 $targetEnvId = "你的Power Platform环境ID" $descRootPath = "C:\PowerAutomate\FlowDescriptions" # 获取环境下所有流 $flowList = Get-AdminFlow -EnvironmentName $targetEnvId foreach ($flow in $flowList) { $targetDescFile = Join-Path $descRootPath "$($flow.FlowId).txt" # 匹配到对应描述文件才执行更新 if (Test-Path $targetDescFile) { $descContent = Get-Content $targetDescFile -Raw -Encoding UTF8 # 执行更新 Set-AdminFlow -EnvironmentName $targetEnvId -FlowName $flow.FlowName -Description $descContent Write-Host "流[$($flow.DisplayName)]描述更新完成" } }
注意:如果目标流属于托管/非托管解决方案,需要在Set-AdminFlow命令中追加-SolutionId "对应解决方案ID"参数,否则会找不到目标流
方案2:直接操作Dataverse(原CRM)实体更新(适合复杂自定义场景)
你提到的流以CRM对象存储的认知是准确的,云端流在Dataverse中对应workflow实体,流类型值为1(分类为Microsoft Flow),描述字段为description:
- 前置依赖安装:执行
Install-Module -Name Microsoft.PowerPlatform.Dataverse.Client -Scope CurrentUser -Force安装Dataverse交互模块 - 认证连接到Dataverse实例后,直接构造update请求,修改对应workflow记录的description字段即可。这种方式适合需要额外关联流的负责人、所属业务单位、解决方案层级等其他属性做批量过滤的复杂场景,灵活度更高。
落地注意事项
- 执行脚本的账号必须拥有目标环境的流编辑权限,否则会返回403权限错误
- 描述内容支持Markdown格式,直接读取文件内容传值即可,Power Automate门户会自动渲染格式
- 正式执行更新前建议先做试运行:把脚本中的更新操作注释掉,仅输出流和描述文件的匹配关系,确认没有错配后再执行实际更新
- 停用状态的流不需要重新启用即可直接更新描述属性,修改后即时生效
内容的提问来源于stack exchange,提问作者JuTrust
相关产品推荐
相关产品推荐

