ساخت گروه های شیرپوینت به وسیله PowerShell

فرض کنید یه کار جدید راه اندازی شیرپوینت تو یک سازمان بزرگ را قبول کردید و پس از جلسات مختلف در مورد دسترسی ها و گروه بندی کاربران به نتیجه قابل اجرا رسیده اید، حالا شما باید 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"
}

 

نتیجه در پاور شل :

ساخت گروه شیرپوینت با پاورشل

ونتیجه در شیرپوینت:

ساخت گروه شیرپوینت با پاورشل

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *