管理權限一直是各種系統的基礎重點,在Sharepoint跟AD的搭配上,都會以AGDLP去講該如何規劃設計。因此在管理 Sharepoint 群組的權限上,系統管理者(ㄞ ㄊㄧ ㄓㄨㄢ ㄩㄢˊ)又要開熟悉Sharepoint Web/ Sharepoint Designer友善的畫面,以下要說明的是
1.在頂層網站建Group
2.把新建好的Group加到各下層的網站,並停止繼承
3.改下層網站各清單的權限
1.在頂層網站建Group,譬如有3個site
$web = Get-SPWeb "http://sps2010/" $web.SiteGroups.Add("site1_A", $web.Site.Owner, $web.Site.Owner,"") $web.SiteGroups.Add("site1_B", $web.Site.Owner, $web.Site.Owner,"") $web.SiteGroups.Add("site1_C", $web.Site.Owner, $web.Site.Owner, "") $web.SiteGroups.Add("site2_A", $web.Site.Owner, $web.Site.Owner,"") $web.SiteGroups.Add("site2_B", $web.Site.Owner, $web.Site.Owner,"") $web.SiteGroups.Add("site2_C", $web.Site.Owner, $web.Site.Owner, "") $web.SiteGroups.Add("site3_A", $web.Site.Owner, $web.Site.Owner,"") $web.SiteGroups.Add("site3_B", $web.Site.Owner, $web.Site.Owner,"") $web.SiteGroups.Add("site3_C", $web.Site.Owner, $web.Site.Owner, "") $web.Update() $web.Dispose()
這一段沒什麼學問,如果需要一次建很多,其實可以用EXCEL去組合上面的字。建完Group後,如果需要先放群組的權限,建議用Sharepoint Designer,用Web去管理會在那邊等等等...
2.把新建好的Group加到各下層的網站,並停止繼承
########################### # # 函示:add group permission # ########################### function AddGroupToSite ($web, $groupName, $permLevel) { $account = $web.SiteGroups[$groupName] $assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account) $role = $web.RoleDefinitions[$permLevel] $assignment.RoleDefinitionBindings.Add($role); $web.RoleAssignments.Add($assignment) } ######### #Subsites待修改:看有哪些子網站要執行 $SubSites = @("site1","site2","site3" ) for($i=0 ; $i -lt $SubSites.count ; $i++) { $url = "http://sps2010/" + $SubSites[$i] $web = Get-SPWeb $url $web.BreakRoleInheritance($false) #Subsites待修改,看Group的名字 $grp1 = $SubSites[$i]+"_A" $grp2 = $SubSites[$i]+"_B" $grp3 = $SubSites[$i]+"_C" AddGroupToSite -web $web -groupName $grp1 -permLevel "Read" AddGroupToSite -web $web -groupName $grp2 -permLevel "Read" AddGroupToSite -web $web -groupName $grp3 -permLevel "Read" $web.Dispose() Write-Output $SubSites[$i] + " Completed!" }
3.改下層網站各清單的權限
$web = Get-SPWeb "http://sps2010/" #List Permission # #兩個清單要改: #ListA: url是 /Site1/List/ListA #ListB: url是 /Site1/SitePicLib #如果有更多要改,就一直加在函示裡面 # ########################### # # 函示:Change List Permission # ########################### function ChangeListPermission ($strSiteName) { $SubSites = $strSiteName $grp1 = $SubSites+"_A" $grp2 = $SubSites+"_B" $grp3 = $SubSites+"_C" $url = "http://sps2010/" + $SubSites $web = Get-SPWeb $url $admaccount = $web.EnsureUser("SHAREPOINT\system") #############################ListA############################# #$ListR = $web.Lists["ListA"] $strListURL = "/" + $SubSites + "/Lists/ListA" $ListR = $web.GetList($strListURL) $ListR.BreakRoleInheritance($false) $account = $web.SiteGroups[$grp2] $assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account) $assignment.RoleDefinitionBindings.Add(($web.RoleDefinitions | Where-Object { $_.Type -eq "Contributor" })) $ListR.RoleAssignments.Add($assignment) $account = $web.SiteGroups[$grp4] $assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account) $assignment.RoleDefinitionBindings.Add(($web.RoleDefinitions | Where-Object { $_.Type -eq "Contributor" })) $ListR.RoleAssignments.Add($assignment) $ListR.RoleAssignments.Remove($admaccount) #############################ListB############################# $strListURL = "/" + $SubSites + "/SitePicLib" $ListR = $web.GetList($strListURL) $ListR.BreakRoleInheritance($false) $account = $web.SiteGroups[$grp2] $assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account) $assignment.RoleDefinitionBindings.Add(($web.RoleDefinitions | Where-Object { $_.Type -eq "Contributor" })) $ListR.RoleAssignments.Add($assignment) $account = $web.SiteGroups[$grp4] $assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account) $assignment.RoleDefinitionBindings.Add(($web.RoleDefinitions | Where-Object { $_.Type -eq "Contributor" })) $ListR.RoleAssignments.Add($assignment) $account = $web.SiteGroups[$grp1] $assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account) $assignment.RoleDefinitionBindings.Add($web.RoleDefinitions["Read"]) $ListR.RoleAssignments.Add($assignment) $account = $web.SiteGroups[$grp3] $assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($account) $assignment.RoleDefinitionBindings.Add($web.RoleDefinitions["Read"]) $ListR.RoleAssignments.Add($assignment) $ListR.RoleAssignments.Remove($admaccount) $web.Dispose() } ########################### #待修改 #實際呼叫函示 ChangeListPermission -strSiteName "site1" ChangeListPermission -strSiteName "site2" ChangeListPermission -strSiteName "site3"
權限這樣就差不多設定完成了,搭配Excel更快!
如果要對Sharepoint Group加AD Group,請看下一篇!
參考資料:
1.PowerShell to create SharePoint groups http://blog.pointbeyond.com/2011/06/03/powershell-to-create-sharepoint-groups/
#DontLikeSP
沒有留言:
張貼留言