SharePoint Online: ให้สิทธิ์ในการแสดงรายการโดยใช้ PowerShell
สิทธิ์เป็นแบบลำดับชั้นใน SharePoint ตั้งแต่คอลเลกชันไซต์ยอดนิยมไปจนถึงระดับรายการ เมื่อมีการสร้างรายการในรายการหรือไลบรารี รายการเหล่านั้นจะสืบทอดสิทธิ์ของรายการหรือไลบรารีนั้น อย่างไรก็ตาม การสืบทอดนี้สามารถใช้งานไม่ได้ และสิทธิ์สามารถนำไปใช้กับรายการได้โดยตรง เมื่อต้องการตั้งค่าสิทธิ์เฉพาะในรายการ คุณต้องกำหนดค่าสิทธิ์ในระดับรายการ นี่คือวิธีการ:
จะให้สิทธิ์การเข้าถึงแต่ละรายการใน SharePoint Online ได้อย่างไร
เราได้รับข้อกำหนดทางธุรกิจในการให้สิทธิ์ในระดับรายการ เมื่อต้องการตั้งค่าสิทธิ์ที่ชัดเจนในรายการ SharePoint Online อันดับแรกเราต้องทำลายการสืบทอดสิทธิ์ (หยุดการสืบทอดสิทธิ์) จากนั้นจึงเพิ่มผู้ใช้หรือกลุ่มลงในรายการ
- ไปที่รายการหรือไลบรารี SharePoint Online ของคุณ >> เลือกรายการที่คุณต้องการให้สิทธิ์เฉพาะ
คลิกลิงก์ "จัดการการเข้าถึง" จากแผงข้อมูล ในหน้าจัดการการเข้าถึง ให้คลิกลิงก์ "ขั้นสูง"
บนแท็บสิทธิ์ ในกลุ่มการสืบทอด ให้คลิกปุ่มหยุดการสืบทอดสิทธิ์ ยืนยันข้อความแจ้ง
ตอนนี้คลิก "ให้สิทธิ์" ปุ่มบนริบบิ้น ในกล่องโต้ตอบแชร์ ให้ใส่ชื่อและที่อยู่อีเมล คลิกปุ่มแสดงตัวเลือก ในกล่องรายการเลือกระดับสิทธิ์ เลือกระดับสิทธิ์ที่เหมาะสม เช่น แก้ไข
- คลิกแชร์
การมีสิทธิ์ระดับรายการมากเกินไปมักนำไปสู่ปัญหาด้านประสิทธิภาพ! ดังนั้นจงระวังด้วย
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


