0

我需要在子站点中创建 2 个 SPGroup,并将多个 AD 组成员添加到组中。

例如,

  1. 我的站点下有子站点 x,y,z
  2. 我有A组,B组
  3. A组的成员是Member1、Member2、Member3
  4. B组的成员是Member1、Member2、Member3、Member4、Member5
  5. 如果它们不存在,我需要在子站点中创建组。

请让我知道任何更好的方法。

我正在尝试使用 Power shell 来做到这一点。

$SPWeb = $Web.Read()
if ($SPWeb.SiteGroups[$GroupName] -ne $null){
   throw "Group $GroupName already exists!"   
}
if ($SPWeb.Site.WebApplication.UseClaimsAuthentication){
   $op = New-SPClaimsPrincipal $OwnerName -IdentityType WindowsSamAccountName
   $mp = New-SPClaimsPrincipal $MemberName -IdentityType WindowsSamAccountName
   $owner = $SPWeb | Get-SPUser $op
   $member = $SPWeb | Get-SPUser $mp
}
else {
   $owner = $SPWeb | Get-SPUser $OwnerName
   $member = $SPWeb | Get-SPUser $MemberName
}
$SPWeb.SiteGroups.Add($GroupName, $owner, $member, $Description)
$SPGroup = $SPWeb.SiteGroups[$GroupName]
$SPWeb.RoleAssignments.Add($SPGroup)
$SPWeb.Dispose()
4

1 回答 1

0
#Create an XML with all the details for the new Groups and menbers for the groups

<?xml version="1.0"?>
<Groups>
    <Group name="GroupA" description="Test GroupA" PermissionLevel="Contribute">
        <Users>
            <User>Domain\Member1</User>
            <User>Domain\Member2</User>
            <User>Domain\Member3</User>
        </Users>
     </Group>
<Group name="GroupB" description="Test GroupB" PermissionLevel="Read">
    <Users>
        <User>Domain\Member1</User>
        <User>Domain\Member2</User>
        <User>Domain\Member3</User>
        <User>Domain\Member4</User>
        <User>Domain\Member5</User>
    </Users>
</Group>

#Now create a script file with the below script

#Get Site and Web objects
$site = get-spsite https://portal/site/Test/ 

#Get all the sub sites under the web 
foreach($web in $site.allwebs) 
{ 
#Get XML file containing groups and associated users
$groupsXML = [xml] (Get-Content ("C:\Temp\Groups.XML"))

#Walk through each group node defined in the XML file
$groupsXML.Groups.Group | ForEach-Object {

    [string]$permissionLevel = $_.PermissionLevel

    #Check to see if SharePoint group already exists in the site collection
    if ($web.SiteGroups[$_.name] -eq $null)
    {
        #If the SharePoint group doesn't exist already - create it from the name and description values at the node
        $web.SiteGroups.Add($_.name, $web.CurrentUser, $null, $_.description)
        $newGroup = $web.SiteGroups[$_.name]
    }

    #Get SharePoint group from the site collection
    $group = $web.SiteGroups[$_.name]

    #Add the users defined in the XML to the SharePoint group
    $_.Users.User | ForEach-Object {
        $group.AddUser($_, "", "", "")      
    }

    $roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group)  
    $roleDefinition = $web.Site.RootWeb.RoleDefinitions[$permissionLevel]  
    $roleAssignment.RoleDefinitionBindings.Add($roleDefinition)

    $web.RoleAssignments.Add($roleAssignment)

    Write-Host "Group Name: "$group" Created at site: " $web.url
 }

 #Dispose of Web and Site objects
 $web.Dispose()
 $site.Dispose()   
 }
于 2014-06-27T18:50:18.190 回答