使用PowerShell将RoleAssignment成员添加到SPItem

时间:2019-12-09 09:17:42

标签: powershell sharepoint spweb

我将执行脚本以从SPitem删除权限。但是,需要回滚计划,并且我需要创建一个单独的脚本,该脚本将在需要时将用户的权限添加回SPitem

下面是我的代码段,该代码段从SPitem中删除了一个用户:

ForEach ($RDfolderId in $RDfolderSplit)
{
    $query = New-Object Microsoft.SharePoint.SPQuery
    $query.ViewXml = "@<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='Title' /><Value Type='Text'>$RDfolderId</Value></Eq></Where></Query></View>"

    $RDfolder = $RDlist.GetItems($query)

    foreach($role in $RDfolder.RoleAssignments)  
    {
        if ($role.Member.Name.Equals($userToAction))
        {
            #$RDitem.BreakRoleInheritance($true)
            #$RDitem.RoleAssignments.RemoveById($roleAssignment.Member.ID)
            #$RDitem.Update()
        }
    }
}

我在网上看到了将roles添加回SPitem的代码示例。但是,还有一个附加字段RoleDefinitions已声明。

在将用户添加到SPitem时必须声明值吗?

以下是用于添加的代码示例:

$web = Get-SPWeb http://sp-2010
$account = $web.EnsureUser("SHAREPOINT\mray")
$role = $web.RoleDefinitions["Contribute"] #is this value compulsory?

$list = $web.Lists["Shared Documents"]

$list.BreakRoleInheritance($true)

$assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account)
$assignment.RoleDefinitionBindings.Add($role)
$list.RoleAssignments.Add($assignment)

$list.Update()
$web.Dispose()

source

1 个答案:

答案 0 :(得分:0)

简短回答-是。

让我们分解一下样本并解释每个部分:

$web = Get-SPWeb http://sp-2010

$web-又名SharePoint Web对象。我们正在处理的网站。

$account = $web.EnsureUser("SHAREPOINT\mray")

$account-我们正在使用的用户帐户。

$role = $web.RoleDefinitions["Contribute"] #is this value compulsory?

$role-这是“角色定义”,也称为“贡献/读取/批准”权限。是。这是强制性的,因为这是您要重新添加的权限。

$list = $web.Lists["Shared Documents"]

$list-我们正在使用的列表。

$list.BreakRoleInheritance($true)

BreakRoleInheritance-如果我们需要对列表具有唯一权限并关闭继承。我们不必每次都这样做,并且在本示例中,您不必破坏继承。

现在,我们进入权限部分。

$assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account)

$assignment-首先,我们需要当前的所有SharePoint角色分配给我们的用户

$assignment.RoleDefinitionBindings.Add($role)

Add($role)-将角色定义(即“贡献”)添加到 user 对象。这对SharePoint上的列表没有任何作用。

$list.RoleAssignments.Add($assignment)

Add($assignment)-将具有新权限的用户添加到 List 对象。这对SharePoint上的列表没有任何作用。我们正在处理所需列表的最终状态。

$list.Update()

Update-现在在SharePoint上执行某些操作。实际上将我们对List对象所做的更改应用于SharePoint。

$web.Dispose()

Dispose-清理对象。


现在。说所有这些。这是设置权限的好脚本。您还具有用于删除权限的脚本。回滚脚本的要点是,您需要记录这些权限的原始内容 ,然后再删除它们。即,一旦您将其删除,就没有神奇的撤消按钮。 ;-)