在Power Automate Desktop中执行PowerShell获取SharePoint online某个文件夹的用户权限列表
1.简单介绍
假如需要查看SharePoint online站点中某一个文件夹都给谁分配了权限,比如如下的文件夹,
获取权限的信息可以使用PowerShell或者代码的方式去调用SharePoint online的API,其中PnP PowerShell在执行SharePoint online相关操作也挺方便的。
这边尝试一下在Power Automate Desktop中执行PnP PowerShell脚本的方式去获取特定folder的权限分配信息并导出为csv文件。
2.具体说明
2.1 PnP PowerShell说明
这边使用的PnP PowerShell Module for SharePoint online版本是相对老一些的,如下图
当前PnP PowerShell for SharePoint online有了新的版本,Github仓库地址是https://github.com/pnp/powershell
新版本可以在Microsoft Extra ID中注册应用程序获取Application Id等信息,并且分配相应的Api权限,这样后续就可以以注册应用程序的形式连接SharePoint online。
在Microsoft Extra ID中注册应用程序也可以使用PnP PowerShell命令来进行,
Register-PnPEntraIDApp -ApplicationName "PnPPowerShellPractice" -Tenant xxxxxx.onmicrosoft.com -Interactive
上面的命令会返回Application Id,然后可以使用Application Id进行SharePoint online服务的连接
$SiteURL = "[Your SharePoint online site URL]"
$ClientID = "[Your Application Id]"# Connect to SharePoint Online site
Connect-PnPOnline -Url $SiteURL -Interactive -ClientId $ClientID
本人的PnP PowerShell module是比较老的版本,目前没有使用注册应用程序的方式来连接
这边使用如下PnP PowerShell命令来连接SharePoint online,
$SiteURL = "[Your SharePoint online site URL]"
Connect-PnPOnline -Url $SiteURL -UseWebLogin;
2.2 制作PAD工作流
PAD是Power Automate Desktop的简写,这边使用Power Automate流来调用PowerShell脚本
Power Automate Desktop中的Run PowerShell script action也可以传递参数进去,如上面图中,建立了三个Input Variable给要执行的脚本
note, 试验下来,给脚本的参数设置成Input Variable是可行的,如果直接在PAD流中设置Variable则脚本不能运行成功的。
2.3 PowerShell脚本
由于SharePoint online的权限分配可以是SharePoint Group的形式来分配权限或者直接给用户分配权限,PnP PowerShell这边用的是如下命令来获取文件夹的RoleAssignments
Get-PnPProperty -ClientObject $Folder.ListItemAllFields -Property HasUniqueRoleAssignments, RoleAssignments
然后再遍历RoleAssignments进行逐个判断,如果是SharePoint Group则使用PnP PowerShell命令获取Group中的用户列表
$GroupMembers = Get-PnPGroupMembers -Identity $GroupName
如果是Unqiue User直接获取用户权限信息
最后将脚本放置到Power Automate Desktop的 Run PowerShell script节点中,
2.4 运行一下
1) 在Power Automate Desktop界面中点击对应工作流的运行命令
2) 在弹出的窗口中,设置三个Variable的值,如下图所示。设定好后,点击OK按钮
3)脚本正在运行中,如下图
4)运行完成后,弹出信息框显示PowerShell的执行结果,同时Flow Monitoring显示如下图,
同时在设定的保存路径中,有SharePoint folder的权限报告生成,
SharePoint online特定文件夹的权限报告内容如下图所示,
note, 由于文件夹内部会有子文件夹,可以先将所有的子文件夹列出来再生成报告,也可以采用递归的方式进行权限信息的导出
3.总结
本文介绍了一下在Power Automate Desktop中执行PowerShell脚本进行SharePoint online特定文件夹的权限报告生成的过程。
本文如果哪里有错误,麻烦告之,谢谢谢谢!