使用 PowerShell 将 RoleAssignment 成员添加到 SPItem
Add RoleAssignment Member to SPItem Using PowerShell
我将执行一个脚本来删除 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()
简答 - 是。
让我们分解这个示例并解释每个部分:
$web = Get-SPWeb http://sp-2010
$web
- SharePoint Web 对象又名。我们正在处理的站点。
$account = $web.EnsureUser("SHAREPOINT\mray")
$account
- 我们正在使用的用户帐户。
$role = $web.RoleDefinitions["Contribute"] #is this value compulsory?
$role
- 这是角色定义,也就是权限,如 Contribute/Read/Approve。是的。这是强制性的,因为它是您要添加回来的权限。
$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)
- 添加角色定义,即 "Contribute" 到 user 对象。这对 SharePoint 上的列表没有任何作用。
$list.RoleAssignments.Add($assignment)
Add($assignment)
- 将具有新权限的 user 添加到 List 对象。这对 SharePoint 上的列表没有任何作用。我们正在操纵我们想要的列表的结束状态。
$list.Update()
Update
- 现在在 SharePoint 上做一些事情。将我们对 List 对象所做的更改实际应用到 SharePoint。
$web.Dispose()
Dispose
- 清理我们的对象。
现在。说了这么多。这是设置权限的好脚本。您还有一个用于删除权限的脚本。回滚脚本的要点是您需要记录这些权限最初是什么 在您删除它们之前。即一旦你删除它们,就没有神奇的撤消按钮。 ;-)
我将执行一个脚本来删除 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()
简答 - 是。
让我们分解这个示例并解释每个部分:
$web = Get-SPWeb http://sp-2010
$web
- SharePoint Web 对象又名。我们正在处理的站点。
$account = $web.EnsureUser("SHAREPOINT\mray")
$account
- 我们正在使用的用户帐户。
$role = $web.RoleDefinitions["Contribute"] #is this value compulsory?
$role
- 这是角色定义,也就是权限,如 Contribute/Read/Approve。是的。这是强制性的,因为它是您要添加回来的权限。
$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)
- 添加角色定义,即 "Contribute" 到 user 对象。这对 SharePoint 上的列表没有任何作用。
$list.RoleAssignments.Add($assignment)
Add($assignment)
- 将具有新权限的 user 添加到 List 对象。这对 SharePoint 上的列表没有任何作用。我们正在操纵我们想要的列表的结束状态。
$list.Update()
Update
- 现在在 SharePoint 上做一些事情。将我们对 List 对象所做的更改实际应用到 SharePoint。
$web.Dispose()
Dispose
- 清理我们的对象。
现在。说了这么多。这是设置权限的好脚本。您还有一个用于删除权限的脚本。回滚脚本的要点是您需要记录这些权限最初是什么 在您删除它们之前。即一旦你删除它们,就没有神奇的撤消按钮。 ;-)