ค้นหาเว็บไซต์

SharePoint Online: ให้สิทธิ์ในการแสดงรายการโดยใช้ PowerShell


สิทธิ์เป็นแบบลำดับชั้นใน SharePoint ตั้งแต่คอลเลกชันไซต์ยอดนิยมไปจนถึงระดับรายการ เมื่อมีการสร้างรายการในรายการหรือไลบรารี รายการเหล่านั้นจะสืบทอดสิทธิ์ของรายการหรือไลบรารีนั้น อย่างไรก็ตาม การสืบทอดนี้สามารถใช้งานไม่ได้ และสิทธิ์สามารถนำไปใช้กับรายการได้โดยตรง เมื่อต้องการตั้งค่าสิทธิ์เฉพาะในรายการ คุณต้องกำหนดค่าสิทธิ์ในระดับรายการ นี่คือวิธีการ:

จะให้สิทธิ์การเข้าถึงแต่ละรายการใน SharePoint Online ได้อย่างไร

เราได้รับข้อกำหนดทางธุรกิจในการให้สิทธิ์ในระดับรายการ เมื่อต้องการตั้งค่าสิทธิ์ที่ชัดเจนในรายการ SharePoint Online อันดับแรกเราต้องทำลายการสืบทอดสิทธิ์ (หยุดการสืบทอดสิทธิ์) จากนั้นจึงเพิ่มผู้ใช้หรือกลุ่มลงในรายการ

  1. ไปที่รายการหรือไลบรารี SharePoint Online ของคุณ >> เลือกรายการที่คุณต้องการให้สิทธิ์เฉพาะ
  2. คลิกลิงก์ "จัดการการเข้าถึง" จากแผงข้อมูล ในหน้าจัดการการเข้าถึง ให้คลิกลิงก์ "ขั้นสูง"

  3. บนแท็บสิทธิ์ ในกลุ่มการสืบทอด ให้คลิกปุ่มหยุดการสืบทอดสิทธิ์ ยืนยันข้อความแจ้ง

  4. ตอนนี้คลิก "ให้สิทธิ์" ปุ่มบนริบบิ้น ในกล่องโต้ตอบแชร์ ให้ใส่ชื่อและที่อยู่อีเมล คลิกปุ่มแสดงตัวเลือก ในกล่องรายการเลือกระดับสิทธิ์ เลือกระดับสิทธิ์ที่เหมาะสม เช่น แก้ไข

  5. คลิกแชร์

การมีสิทธิ์ระดับรายการมากเกินไปมักนำไปสู่ปัญหาด้านประสิทธิภาพ! ดังนั้นจงระวังด้วย

SharePoint Online: ตั้งค่าสิทธิ์ของรายการโดยใช้ PowerShell:

จะให้สิทธิ์ระดับรายการสำหรับ SharePoint Online ได้อย่างไร นี่คือ PowerShell ของฉันเพื่อให้สิทธิ์ใน SharePoint Online


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

Function Set-ListItemPermission
{
    param
    (   
        [Parameter(Mandatory=$true)] [string]$SiteURL,
        [Parameter(Mandatory=$true)] [string]$ListName,
        [Parameter(Mandatory=$true)] [string]$ItemID,
        [Parameter(Mandatory=$true)] [string]$PermissionLevel,
        [Parameter(Mandatory=$true)] [string]$UserID
    )
    Try {
        #Setup Credentials to connect
        $Cred= Get-Credential
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Credentials
        
        #Get the List and Item
        $List = $Ctx.Web.Lists.GetByTitle($ListName)
        $ListItem=$List.GetItemByID($ItemID)
        $Ctx.Load($List)
        $Ctx.Load($ListItem)
        $Ctx.ExecuteQuery()

        #Check if Item has unique permission already
        $list.Retrieve("HasUniqueRoleAssignments")
        $Ctx.ExecuteQuery()

        #Break Item's permission Inheritance, if its inheriting permissions from the parent
        if (-not $ListItem.HasUniqueRoleAssignments)
        {
            $ListItem.BreakRoleInheritance($false, $false) #keep the existing permissions: No -  Clear listitems permissions: No
            $ctx.ExecuteQuery()
        }

        #Get the User
        $User = $Ctx.Web.EnsureUser($UserID)
        $Ctx.load($User)
        $Ctx.ExecuteQuery()

        #Get the role 
        $Role = $Ctx.web.RoleDefinitions.GetByName($PermissionLevel)
        $RoleDB = New-Object Microsoft.SharePoint.Client.RoleDefinitionBindingCollection($Ctx)
        $RoleDB.Add($Role)
         
        #Assign permissions
        $UserPermissions = $ListItem.RoleAssignments.Add($User,$RoleDB)
        $ListItem.Update()
        $Ctx.ExecuteQuery()
    
        Write-host -f Green "Permission granted to List Item successfully!"
    }
    Catch {
        Write-host -f Red "Error granting permission to List Item!" $_.Exception.Message
    }
}

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ListName="Projects"
$ItemID="1"
$UserID="salaudeen@crescent.com"
$PermissionLevel="Edit"

#Call the function
Set-ListItemPermission -SiteURL $SiteURL -ListName $ListName -ItemID $ItemID -UserID $UserID -PermissionLevel $PermissionLevel 

สคริปต์นี้ให้สิทธิ์ในระดับรายการสำหรับผู้ใช้ที่กำหนด หากคุณต้องการให้สิทธิ์แก่กลุ่ม SharePoint แทนที่จะเป็นบรรทัด


$User = $Web.EnsureUser($UserAccount)
#use:
$Group =$Web.SiteGroups.GetByName($GroupName)
#and then
$GroupPermissions = $Item.RoleAssignments.Add($Group,$RoleDB)

PnP PowerShell เพื่อตั้งค่าสิทธิ์ระดับรายการ

เมื่อต้องการเปลี่ยนสิทธิ์สำหรับรายการใน SharePoint Online โดยใช้ PowerShell ให้ใช้: Set-PnPListItemPermission cmdlet


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sites/Marketing"
$ListName ="Projects"
$ListItemID ="1"
$GroupName="Marketing Members"
$UserID="Peter@TheCrescentTech.com"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)

#Get the Group
$Group = Get-PnPGroup | where-Object {$_.Title -eq $GroupName}

#Grant permission to Group - Remove all existing permissions
Set-PnPListItemPermission -Identity $ListItemID -List $ListName -AddRole "Read" -Group $Group -ClearExisting

#Grant permission to User
Set-PnPListItemPermission -Identity $ListItemID -List $ListName -AddRole "Edit" -User $UserID

คุณสามารถรับสิทธิ์ที่มีอยู่ทั้งหมดเพื่อเพิ่มหรือลบได้โดยใช้ Get-PnPRoleDefinition cmdlet เราสามารถให้สิทธิ์แก่รายการทั้งหมดได้เช่นเดียวกับใน SharePoint Online: ให้สิทธิ์แก่รายการทั้งหมดในรายการโดยใช้ PowerShell

บทความที่เกี่ยวข้อง