فرض کنید یه کار جدید راه اندازی شیرپوینت تو یک سازمان بزرگ را قبول کردید و پس از جلسات مختلف در مورد دسترسی ها و گروه بندی کاربران به نتیجه قابل اجرا رسیده اید، حالا شما باید 30 گروه در شیرپوینت بسازید خب انجام این کار با UI کار زمانبری هست اما باز هم میشه با یکم خلاقیت کار چند ساعته را در کمتر از 5 دقیقه با ساخت گروه های شیرپوینت به وسیله PowerShell انجام داد.
برای ساخت گروه های شیرپوینت به وسیله PowerShell می توانید از کد زیر استفاده کنید فقط کافی است که شما اسم سایت ، نام گروه ، سطح دسترسی و توضیحات مربوط به گروه را در خط آخر جلوی تابع CreateGroup به ترتیب مانند مثال وارد کنید.
function CreateGroup { param ($URL, $GroupName, $PermissionLevel, $GroupDescription) try { #Retrive the Web $web = Get-SPWeb -Identity $URL #Check if web Exists already if ($web -ne $null) { #Check if Group already exists if ($web.SiteGroups[$GroupName] -ne $null) { write-Host "Group $GroupName Already exists !" -ForegroundColor Red } else { $Web.SiteGroups.Add($GroupName, $web.Site.Owner, $web.Site.Owner, $GroupDescription) $Group = $web.SiteGroups[$groupName] $roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group) $roleDefinition = $web.Site.RootWeb.RoleDefinitions[$permissionLevel] $roleAssignment.RoleDefinitionBindings.Add($roleDefinition) $web.RoleAssignments.Add($roleAssignment) $web.Update() write-Host "Group: $GroupName created successfully!" -ForegroundColor Green } $web.Dispose() } } catch [System.Exception] { write-host $_.Exception.ToString() -ForegroundColor Red } } #Call the function CreateGroup "http://portal.example.com" "GroupName" "Read" "Created by PowerShell"
خب نتیجه حاصل شده را مشاهده کنید:
و همچنین داخل شیرپوینت :
خب تا اینجا نتیجه خوب بود اما فرض کنید 20 گروه می خواهید بسازید آیا باید 20 بار این کد را تکرارکرد یا راه حل ساده تری وجود دارد؟
برای این کار ابتدا باید یک آرایه از اسم گروه ها بسازید و سپس با اضافه کردن آن به همراه تابع for-each کد را برای هر گروه تکرار کنید مشابه کد زیر:
$Groups = @( "مدیر-فنی مهندسی";"مدیر-امور قراردادها";"مدیر-برق";"مدیر-الکترنیک";"مدیر-سازه";"مدیر-کنترل پروژه";"مدیر-معماری";"مدیر-سه بعدی";"مدیر-مالی";"مدیر-پشتیبانی";"کارمندان-فنی مهندسی";"کارمندان-امور قراردادها";"کارمندان-برق";"کارمندان-الکترنیک";"کارمندان-سازه";"کارمندان-کنترل پروژه";"کارمندان-معماری";"کارمندان-سه بعدی";"کارمندان-مالی";"کارمندان-پشتیبانی" ) foreach ($Group in $Groups) { $Group function CreateGroup { param ($URL, $GroupName, $PermissionLevel, $GroupDescription) try { #Retrive the Web $web = Get-SPWeb -Identity $URL #Check if web Exists already if($web -ne $null) { #Check if Group already exists if ($web.SiteGroups[$GroupName] -ne $null) { write-Host "Group $GroupName Already exists !" -ForegroundColor Red } else { $Web.SiteGroups.Add($GroupName, $web.Site.Owner, $web.Site.Owner, $GroupDescription) $Group = $web.SiteGroups[$groupName] $roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group) $roleDefinition = $web.Site.RootWeb.RoleDefinitions[$permissionLevel] $roleAssignment.RoleDefinitionBindings.Add($roleDefinition) $web.RoleAssignments.Add($roleAssignment) $web.Update() write-Host "Group: $GroupName created successfully!" -ForegroundColor Green } $web.Dispose() } } catch [System.Exception] { write-host $_.Exception.ToString() -ForegroundColor Red } } #Call the function CreateGroup "http://sp-app:16000" $Group "Read" "Created by PowerShell" }
نتیجه در پاور شل :
ونتیجه در شیرپوینت: