Dynamics365中部分Power Automate流缺失且无WorkflowID问题咨询
问题背景
编写PowerShell脚本采集Power Automate流信息时,发现部分流无workflowentityid(即WorkflowID),这类流无统一分布特征:跨多个环境存在,同时覆盖启用、禁用状态,创建者、所有者无共性。访问对应环境Dataverse的workflows表接口https://<环境域名>.crm.dynamics.com/api/data/v9.1/workflows排查时,上述缺失ID的流均未出现在返回结果中,需排查根因。
原排查脚本
$Flowids = $null $NOids=$null $NOids=@() $flowids = @() $flowarray = $null $flowarray = @() $environment = Get-FlowEnvironment -EnvironmentName Default-d67fa8sd7f-e8f76ds7sa-98ds7f-98af7 $flows = get-adminflow -EnvironmentName $environment.environmentname Foreach($flow in $flows) { Get-AdminFlow -EnvironmentName $environment.environmentname -FlowName $flow.flowname $Result = New-object PSOBJECT $result | Add-Member -MemberType NoteProperty -name "Name" -value $flow.DisplayName $result | Add-Member -MemberType NoteProperty -name "workflowid" -value $flow.internal.properties.workflowentityid $flowarray += $result if($flow.internal.properties.workflowentityid -ne $null) { $Flowids += $flow.internal.properties.workflowentityid } if($flow.internal.properties.workflowentityid -eq $null) { $NOids += $flow.displayname } }
排查方案
- 先筛除正常无WorkflowID的流:
Get-AdminFlow返回的流集合并非全部与Dataverse workflows表绑定。Teams个人上下文流、内置SaaS模板流、软删除后留存的流残迹、非解决方案感知的测试流,都不会在Dataverse侧生成对应workflow实体,自然不存在workflowentityid。给脚本新增flowType字段输出,对缺失ID的流按类型归类,即可先排除这部分正常场景。 - 修复脚本逻辑消除接口字段裁剪误判:当前脚本存在逻辑问题,循环内调用单流详情接口
Get-AdminFlow后未将结果赋值给变量,后续属性判断全部基于列表接口返回的$flow对象。Power Platform管理接口的列表响应默认会裁剪非必填字段,部分流的workflowentityid不会在列表结果中透出,并非真的缺失。将单流查询结果赋值后再读取属性即可修正这类误判,核心修正代码如下:Foreach($flow in $flows) { # 将单流查询结果赋值给变量,使用该变量读取全量属性 $flowDetail = Get-AdminFlow -EnvironmentName $environment.environmentname -FlowName $flow.flowname $Result = New-object PSOBJECT $result | Add-Member -MemberType NoteProperty -name "Name" -value $flowDetail.DisplayName $result | Add-Member -MemberType NoteProperty -name "workflowid" -value $flowDetail.internal.properties.workflowentityid # 后续判断逻辑统一使用$flowDetail变量 $flowarray += $result if($flowDetail.internal.properties.workflowentityid -ne $null) { $Flowids += $flowDetail.internal.properties.workflowentityid } else { $NOids += $flowDetail.displayname } } - 排查Dataverse同步异常:通过旧版API、批量脚本、第三方工具创建的流,偶发会出现管理侧可见但Dataverse实体同步失败的问题,这类流不会生成workflowentityid,也不会出现在workflows表中,手动进入流编辑页点击一次保存触发同步,即可正常生成对应记录和ID。
- 校验Dataverse接口查询权限:调用workflows表接口时,如果当前身份没有对应流的行级读取权限,接口会自动过滤无权限记录,造成“流不在表中”的假象,换用环境系统管理员或全局管理员身份重新查询即可排除权限影响。
内容的提问来源于stack exchange,提问作者JuTrust
相关产品推荐
相关产品推荐

