简体   繁体   中英

Need help in powershell script.

I have sharepoint 2010 toplevel site with name Test. Under test there are three subsites with name test1, test2, test3 respectively. In top level site (Test) there are three custom group names are: test1group, test2group and test3group.

Using powershell script I want to export the group and permission to their respective subsite. For example if we want to export the group and permission in test1 subsite then only test1group should be inherited not test2group and test3group..and the similary while performing group export for test2 subsite then, only test2group should be inheriated...not test1group and test2group....and so on(for test3 subsite)..

Using the below scripts I was trying to perform this:

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()
}

But everytime its inhereting all the group from top level site(which is default behavior)....Can we customize the powershell script so that we can achieve the above functionality..Any help is highly appreciated.

When you break the inheritance, it creates a copy of what was originally inherited.

I don't have the Sharepoint commands handy, but you should be able to do something like

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

to remove the initially inherited groups.

So you could add this to your existing script and have something like

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()
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM