将新用户添加到 SharePoint 对象时出现固定大小的集合错误
Collection was of a fixed size Error when Adding New User to SharePoint object
我在将用户添加到 SharePoint 文件夹对象时遇到以下错误:
Exception calling "Add" with "1" argument(s): "Collection was of a
fixed size."
At D:\User\Script1.ps1:114 char:17
$FPfolder.RoleAssignments.Add($assignment)
- CategoryInfo: NotSpecified: (:) [], MethodInvocationException
- FullyQualifiedErrorId : NotSupportedException
下面是我的代码片段:
ForEach ($FPfolderId in $FPfolderSplit)
{
$query = New-Object Microsoft.SharePoint.SPQuery
$query.ViewXml = "@<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='Title' /><Value Type='Text'>$FPfolderId</Value></Eq></Where></Query></View>"
$FPfolder = $FPlist.GetItems($query)
foreach($role in $FPfolder.RoleAssignments)
{
if ($role.Member.Name.Equals($userToAction))
{
$FPfolder.BreakRoleInheritance($true)
$account = $web.EnsureUser("User1")
$assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account)
$FPfolder.RoleAssignments.Add($assignment)
$FPfolder.Update()
}
}
}
我已经在 here 之前
发布了你的问题的答案
在您的例子中,$FPfolder
是 ListItems 的集合。您不能将角色分配添加到集合。
如果您确定 $FPfolder
是一个仅包含一个元素(文件夹)的集合,只需在 $FPlist.GetItems($query)
之后添加 [0]
。
或者您可以将 $FPfolder
重命名为 $FPfolders
并添加额外的 foreach 循环以迭代 SP 文件夹:
ForEach ($FPfolderId in $FPfolderSplit)
{
$query = New-Object Microsoft.SharePoint.SPQuery
$query.ViewXml = "@<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='Title' /><Value Type='Text'>$FPfolderId</Value></Eq></Where></Query></View>"
$FPfolders = $FPlist.GetItems($query)
foreach($FPfolder in $FPfolders )
{
foreach($role in $FPfolder.RoleAssignments)
{
if ($role.Member.Name.Equals($userToAction))
{
$FPfolder.BreakRoleInheritance($true)
$account = $web.EnsureUser("User1")
$assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account)
$FPfolder.RoleAssignments.Add($assignment)
$FPfolder.Update()
}
}
}
}
我在将用户添加到 SharePoint 文件夹对象时遇到以下错误:
Exception calling "Add" with "1" argument(s): "Collection was of a fixed size."
At D:\User\Script1.ps1:114 char:17 $FPfolder.RoleAssignments.Add($assignment)
- CategoryInfo: NotSpecified: (:) [], MethodInvocationException
- FullyQualifiedErrorId : NotSupportedException
下面是我的代码片段:
ForEach ($FPfolderId in $FPfolderSplit)
{
$query = New-Object Microsoft.SharePoint.SPQuery
$query.ViewXml = "@<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='Title' /><Value Type='Text'>$FPfolderId</Value></Eq></Where></Query></View>"
$FPfolder = $FPlist.GetItems($query)
foreach($role in $FPfolder.RoleAssignments)
{
if ($role.Member.Name.Equals($userToAction))
{
$FPfolder.BreakRoleInheritance($true)
$account = $web.EnsureUser("User1")
$assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account)
$FPfolder.RoleAssignments.Add($assignment)
$FPfolder.Update()
}
}
}
我已经在 here 之前
发布了你的问题的答案在您的例子中,$FPfolder
是 ListItems 的集合。您不能将角色分配添加到集合。
如果您确定 $FPfolder
是一个仅包含一个元素(文件夹)的集合,只需在 $FPlist.GetItems($query)
之后添加 [0]
。
或者您可以将 $FPfolder
重命名为 $FPfolders
并添加额外的 foreach 循环以迭代 SP 文件夹:
ForEach ($FPfolderId in $FPfolderSplit)
{
$query = New-Object Microsoft.SharePoint.SPQuery
$query.ViewXml = "@<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='Title' /><Value Type='Text'>$FPfolderId</Value></Eq></Where></Query></View>"
$FPfolders = $FPlist.GetItems($query)
foreach($FPfolder in $FPfolders )
{
foreach($role in $FPfolder.RoleAssignments)
{
if ($role.Member.Name.Equals($userToAction))
{
$FPfolder.BreakRoleInheritance($true)
$account = $web.EnsureUser("User1")
$assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account)
$FPfolder.RoleAssignments.Add($assignment)
$FPfolder.Update()
}
}
}
}