Blog链接:https://blog.51cto.com/13969817
随着企业的不断壮大,人员流动也变得日渐频繁,那么用户管理和权限分配的需求就与日俱增,比如用户Nigo是很多SharePoint Group的成员,因某种情况,需要将其权限克隆给用户Shelley,那么这种情况下,SharePoint Online的内置功能是无法实现的,在不借助第三方工具的情况下,该如何实现呢?
下图为Nigo的权限结构图
说明:
- Sharing Link,用户会存储在特殊的Group中
- 子节点打破继承之后,针对父节点而言,会生成Limited Group
解决方案:今天我们调用Clone-SPOUserGroupPermission
函数
来实现该需求,具体操作过程如下:
1. 获取SharePoint Online Center Admin,并赋给$AdminCenterURL,命令如下:
$AdminCenterURL = https://mvptrainingcn-admin.sharepoint.com/
2. 连接SharePoint Online管理中心,登录账户至少有SharePoint Online的管理员账户权限,命令如下:
Connect-SPOService -Url $AdminCenterURL -Credential (Get-Credential)
3. 获取网站URL,并赋给$SiteURL,命令为:
$SiteURL = https://mvptrainingcn.sharepoint.com/sites/Contoso_China
4. 获取源端用户ID,并赋给$SourceUserID,命令如下:
$SourceUserID ="nigo.XX@mvptrainingcn.onmicrosoft.com"
5. 获取目的端用户ID,并赋给$TargetUserID,命令如下:
$TargetUserID =ShelleyXXX@mvptrainingcn.onmicrosoft.com
- 调用
Clone-SPOUserGroupPermission
函数,命令如下:
Function Clone-SPOUserGroupPermission($SiteURL, $SourceUserID, $TargetUserID)
{
Try {
$Site = Get-SPOSite $SiteURL
$SourceUser = Get-SPOUser -Site $Site -LoginName $SourceUserID
$UserGroups = $SourceUser.Groups
If($UserGroups.Count -gt 0)
{
Write-host -f Yellow "Found the User Member of $($UserGroups.Count) Group(s)..."
ForEach ($Group in $UserGroups)
{
Add-SPOUser -Site $Site -LoginName $TargetUserID -Group $Group | out-null
Write-Host -f Green "Added $TargetUserID to Group '$Group'"
}
}
}
Catch {
Write-host $_.Exception.Message -f Red
}
}
说明:
- 遍历网站集以及其子节点自定义的所有Group,包含Limited Group
- 遍历因Sharing Link分享而生成的Group
7. 执行Clone命令,如下:
Clone-SPOUserGroupPermission -SiteURL $SiteURL -SourceUserID
$SourceUserID -TargetUserID $TargetUserID
说明:Shelley被Clone到Nigo所在的Group中,享受Group在网站所具备的权限。