当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 在 SharePoint 2016 中将“编辑”权限替换为“贡献”权限

作者:精品下载站 日期:2024-12-14 14:10:34 浏览:14 分类:玩电脑

使用 PowerShell 在 SharePoint 2016 中将“编辑”权限替换为“贡献”权限


问题:在 SharePoint 2013 之前,网站的 Members 组具有“贡献”权限。从 SharePoint 2013 开始,引入了新的权限级别“编辑”,并具有更多权限。这引入了其他问题,例如成员可以删除列表和库!

如何在 SharePoint 中将“编辑”权限替换为“贡献”权限?

删除编辑权限并为网站的所有用户和组添加贡献权限!操作方法如下: 导航至:

  • 站点设置>>站点权限
  • 选择您想要更改的具有编辑权限的个人或组 >> 单击“编辑用户权限”功能区按钮

    [玩转系统] 使用 PowerShell 在 SharePoint 2016 中将“编辑”权限替换为“贡献”权限

  • 在编辑权限页面中取消选中“编辑”权限并选择“贡献”

    [玩转系统] 使用 PowerShell 在 SharePoint 2016 中将“编辑”权限替换为“贡献”权限

  • 单击“确定”保存更改。现在,成员组具有贡献权限,而不是编辑权限。
编辑“编辑”权限级别并从中删除“添加、编辑和删除列表”权限也可以解决问题,但不建议在 SharePoint 中更改 OOTB 权限级别!

可是等等!谁可以访问 Web 应用程序的每个站点并重复上述步骤?乏味!不是吗?因此,让我们使用 PowerShell 重新分配“编辑”中“贡献”的权限。

PowerShell替换成员组的编辑权限以贡献访问权限:

此 PowerShell 脚本将所有用户和组的权限级别从“编辑”更改为“贡献”。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Web Application URL
$WebAppURL="https://intranet.crescent.com/"

#Get all webs from the web application
$WebsCollection = Get-SPWebApplication $WebAppURL | Get-SPSite -Limit All | Get-SPWeb  -limit All

#Iterate through each web and replace "Edit" to "Contribute"
Foreach ($web in $WebsCollection)
{
    #Get Edit and Contribute permission levels
    $ContributePermission = $web.RoleDefinitions["Contribute"]
    $EditPermission = $web.RoleDefinitions["Edit"]

    Write-host "Processing:" $web.Url

    If (!$web.HasUniquePerm)
    {
        Write-host -f Yellow "Web is inheriting permissions..."
        continue
    }

    #Get all users and groups with Edit permissions
    $RoleAssignmentsColl = $web.RoleAssignments | where {$_.RoleDefinitionBindings -eq $EditPermission}
    
    #Loop through each user/group with Edit permission level
    foreach($RoleAssignment in $RoleAssignmentsColl)
    { 
        #Add Contribute Permissions
        if(!$RoleAssignment.RoleDefinitionBindings.Contains($ContributePermission))
        {
            $RoleAssignment.RoleDefinitionBindings.Add($ContributePermission)
            $RoleAssignment.Update()
            Write-host -f Green "Contribute Permission Added to the User/Group:" $RoleAssignment.Member.Name
        }
 
        #Remove Edit permissions
        if($RoleAssignment.RoleDefinitionBindings.Contains($EditPermission))
        {
            $RoleAssignment.RoleDefinitionBindings.Remove($EditPermission)
            $RoleAssignment.Update()
            Write-host -f Green "Edit Permission removed from the User/Group:" $RoleAssignment.Member.Name
        }
    }
}

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯