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

[玩转系统] 使用 PowerShell 打破权限继承并在 SharePoint 列表中添加或删除用户

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

使用 PowerShell 打破权限继承并在 SharePoint 列表中添加或删除用户


默认情况下,SharePoint 列表和库在创建时继承其父网站的权限。有时您可能希望在 SharePoint 列表级别实施唯一权限。例如,如果某些用户只能访问 SharePoint 站点中的特定列表,而不访问任何其他对象。因此,要在 SharePoint 网站、列表、库、文件夹或项目上设置唯一权限,我们应该首先打破权限继承。只需按照以下步骤操作:

  • 导航到您的目标 SharePoint 列表或库
  • 单击“列表设置>>”,然后单击“此列表的权限”。
  • 在功能区中,单击“停止继承权限”图标,如下图所示。打破权限继承并不会立即删除所有现有权限!在权限被破坏之前,父级权限的副本将应用于子对象(例如列表/项目)。

    [玩转系统] 使用 PowerShell 打破权限继承并在 SharePoint 列表中添加或删除用户

  • 删除不需要访问此列表的用户或组。
  • 向需要访问此列表的其他用户和组授予权限。
在向 SharePoint 列表添加或删除用户之前,请确保已中断权限继承。否则,您将得到“继承权限的对象不允许进行此操作”异常!

SharePoint PowerShell 打破权限继承:

要中断 SharePoint 网站或列表上的权限继承,请使用此 PowerShell 脚本。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"
$CopyParentPermissions = $True

#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)

If ($List -ne $null)
{
    if ($List.HasUniqueRoleAssignments -eq $False)
    {
        $List.BreakRoleInheritance($CopyParentPermissions)
        Write-host "Stopped Inheriting Permissions from the parent." -f Green
    }
    else
    {
        write-host "List is already using Unique Permissions!" -f Red
    }
}

要删除已继承到列表的所有权限,请将变量 $CopyParentPermissions 设置为 $False。

使用 PowerShell 添加对 SharePoint 列表的权限:

一旦权限从其父级中断开,我们就可以使用 PowerShell 在列表中添加或删除用户。在 SharePoint 中使用此 PowerShell 向列表添加权限。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"

#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)

If ($List -ne $null)
{
    #Grant contribute Permission to a User account
    $UserAccount="Crescent\Omar"
    $User = $web.EnsureUser($UserAccount)
    $RoleDefinition = $Web.RoleDefinitions["Contribute"]
    $RoleAssignment = New-Object Microsoft.SharePoint.SPRoleAssignment($User)
    $RoleAssignment.RoleDefinitionBindings.Add($RoleDefinition)
    $List.RoleAssignments.Add($RoleAssignment)
    $List.Update()
    Write-host "Permissions Granted to User Account: $UserAccount" -f Green     

    #Grant Read access to the Members SharePoint Group
    $GroupName="Crescent Intranet Members"
    $Group = $Web.SiteGroups[$GroupName]
    $RoleDefinition = $Web.RoleDefinitions["Read"]
    $RoleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($Group)
    $RoleAssignment.RoleDefinitionBindings.Add($RoleDefinition);  
    $List.RoleAssignments.Add($RoleAssignment)  
    $List.Update() 
    Write-host "Permissions Granted to SharePoint Group: $GroupName" -f Green
} 

如何使用 PowerShell 从 SharePoint 列表中删除权限

确保在运行此脚本之前已经中断了权限继承。


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"

#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)

If ($List -ne $null)
{
    #Remove User Permissions from the List
    $UserAccount="Crescent\Omar"
    $User = $web.EnsureUser($UserAccount)
    $List.RoleAssignments.Remove($User)
    $List.Update()
    Write-host "Permissions Removed from the User Account: $UserAccount" -f Green     

    #Revoke permission from a SharePoint Group
    $GroupName="Crescent Intranet Members"
    $Group = $Web.SiteGroups[$GroupName]
    $List.RoleAssignments.Remove($Group)  
    $List.Update() 
    Write-host "Permissions Revoked from SharePoint Group: $GroupName" -f Green
}

PowerShell 从列表中删除所有权限:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"

#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)

If ($List -ne $null)
{
    #Get All permissions applied to List
    $RoleAssignmentCount = $List.RoleAssignments.Count

    #Remove All Permissions from the List
    For ($i= $RoleAssignmentCount-1; $i -ge 0; $i--)
    {
        Write-host "Removing Permission from:"$List.RoleAssignments[$i].Member.name
        $List.RoleAssignments.Remove($i)
    }
}

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

取消回复欢迎 发表评论:

关灯