1

Testという名前のSharePoint2010トップレベルサイトがあります。テスト中は、それぞれtest1、test2、test3という名前の3つのサブサイトがあります。トップレベルサイト(テスト)には、test1group、test2group、test3groupの3つのカスタムグループ名があります。

PowerShellスクリプトを使用して、グループとアクセス許可をそれぞれのサブサイトにエクスポートします。たとえば、test1サブサイトでグループと権限をエクスポートする場合は、test2groupとtest3groupではなくtest1groupのみを継承する必要があります。同様に、test2サブサイトでグループエクスポートを実行する場合は、test2groupのみを継承する必要があります...test1groupとtest2groupではありません。 ....など(test3サブサイトの場合)。

以下のスクリプトを使用して、これを実行しようとしました。

function AddGroupToSite($url, $groupName, $permLevel)
{
$web = Get-SPWeb $url
#Break permissions inheritance and copy the groups from parent site into this site     (recommended)

 $web.BreakRoleInheritance($true)
 $web.Update()
#Creating a new group:
$web.SiteGroups.Add($groupName, $web.Site.Owner, $web.Site.Owner, "New Group from   powershell 4")
 $newGroup = $web.SiteGroups[$groupName]

#Create role assignment:
$newGroupAssign = New-Object Microsoft.SharePoint.SPRoleAssignment($newGroup)

#Assign a specific role
#The possible enumeration values are: None, Guest, Reader, Contributor, WebDesigner, Administrator
$newGroupAssign.RoleDefinitionBindings.Add($web.RoleDefinitions.GetByType($permLevel))
$web.RoleAssignments.Add($newGroupAssign)

#Update web
$web.Update()
$web.Dispose()
}

しかし、トップレベルのサイトからすべてのグループを組み込むたびに(これはデフォルトの動作です)...上記の機能を実現できるようにPowerShellスクリプトをカスタマイズできますか?..どんな助けでも大歓迎です。

4

1 に答える 1

0

継承を解除すると、最初に継承されたもののコピーが作成されます。

便利なSharepointコマンドはありませんが、次のようなことができるはずです

function Remove-SPGroup ($url, $groupName)
{
  $web = Get-SPWeb $url
  $web.SiteGroups.Remove($GroupName)
  $web.Update()
  $web.dispose()
}

最初に継承されたグループを削除します。

したがって、これを既存のスクリプトに追加して、次のようなものにすることができます

function AddGroupToSite($url, $groupName, $permLevel)
{
$web = Get-SPWeb $url
#Break permissions inheritance and copy the groups from parent site into this site     (recommended)

 $web.BreakRoleInheritance($true)
 $web.Update()
#Creating a new group:
$web.SiteGroups.Add($groupName, $web.Site.Owner, $web.Site.Owner, "New Group from   powershell 4")
 $newGroup = $web.SiteGroups[$groupName]

 foreach ($ExistingGroup in $web.SiteGroups)
 {
   if ($ExistingGroup.name -notlike $groupname)
   {
     $web.SiteGroups.Remove($ExistingGroup.name)
    }
  }

#Create role assignment:
$newGroupAssign = New-Object Microsoft.SharePoint.SPRoleAssignment($newGroup)

#Assign a specific role
#The possible enumeration values are: None, Guest, Reader, Contributor, WebDesigner, Administrator
$newGroupAssign.RoleDefinitionBindings.Add($web.RoleDefinitions.GetByType($permLevel))
$web.RoleAssignments.Add($newGroupAssign)

#Update web
$web.Update()
$web.Dispose()
}
于 2012-10-04T15:39:22.167 に答える