我将执行脚本以从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()
答案 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
-清理对象。
现在。说所有这些。这是设置权限的好脚本。您还具有用于删除权限的脚本。回滚脚本的要点是,您需要记录这些权限的原始内容 ,然后再删除它们。即,一旦您将其删除,就没有神奇的撤消按钮。 ;-)