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

SharePoint Online: PowerShell เพื่อแบ่งการสืบทอดสิทธิ์ของโฟลเดอร์


ความต้องการ: แบ่งการสืบทอดสิทธิ์ของโฟลเดอร์ใน SharePoint Online โดยใช้ PowerShell

จะแยกการสืบทอดของโฟลเดอร์ใน SharePoint Online ได้อย่างไร

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

ต่อไปนี้เป็นวิธีการแบ่งการสืบทอดสิทธิ์ใน SharePoint Online:

  1. นำทางไปยังไลบรารี SharePoint Online ของคุณซึ่งเก็บโฟลเดอร์ไว้
  2. เลือกโฟลเดอร์ >> คลิกที่ "จัดการการเข้าถึง" จากเมนูบริบทของโฟลเดอร์ >> คลิกที่ลิงก์ "ขั้นสูง" ในป๊อปอัปจัดการการเข้าถึง

  3. ในหน้าการอนุญาต หากโฟลเดอร์สืบทอดการอนุญาตจากพาเรนต์ เราจะต้องทำลายการสืบทอดการอนุญาตโดยคลิกปุ่ม "หยุดการสืบทอดการอนุญาต" ยืนยันข้อความแจ้งหนึ่งครั้ง

ตอนนี้คุณสามารถเพิ่มหรือลบผู้ใช้ออกจากโฟลเดอร์ได้โดยคลิกปุ่ม "ให้สิทธิ์" จากกลุ่มให้สิทธิ์ เมื่อคุณหยุดสืบทอดสิทธิ์ - ผู้ใช้และกลุ่มทั้งหมดจะถูกคัดลอกจากรายการหรือไลบรารีไปยังสิทธิ์ของโฟลเดอร์ จากจุดนี้ การเปลี่ยนแปลงการอนุญาตในอนาคตที่ทำกับออบเจ็กต์หลักจะไม่ส่งผลต่อโฟลเดอร์อีกต่อไป!

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"
  
#Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing/"
$FolderServerRelativeURL = "/sites/marketing/Shared Documents/2018"
 
Try {
    #Get Credentials to connect
    $Cred= Get-Credential
 
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
    #Get the Folder
    $Folder = $Ctx.Web.GetFolderByServerRelativeUrl($FolderServerRelativeURL)
    $Ctx.Load($Folder)
    $Ctx.ExecuteQuery()
     
    #Break Permission inheritence of the folder - Keep all existing folder permissions & keep Item level permissions
    $Folder.ListItemAllFields.BreakRoleInheritance($True,$True)
    $Ctx.ExecuteQuery()
    Write-host "Folder's Permission Inheritance Broken Successfully!" -ForegroundColor Green  
}
Catch {
    write-host -f Red "Error breaking Folder Permission Inheritance!" $_.Exception.Message
}

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

หยุดการสืบทอดโฟลเดอร์ใน SharePoint Online โดยใช้ PnP PowerShell

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


#Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing/"
$FolderServerRelativeURL = "/sites/marketing/Shared Documents/2018"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)  #-Interactive
 
#Get the Folder 
$Folder = Get-PnPFolder -Url $FolderServerRelativeURL -Includes ListItemAllFields.HasUniqueRoleAssignments

If($Folder.ListItemAllFields.HasUniqueRoleAssignments)
{
    Write-host "Folder is already with broken permissions!" -f Yellow
}
Else
{
    #Break Folder permissions - keep all existing permissions & keep Item level permissions
    $Folder.ListItemAllFields.BreakRoleInheritance($True,$True)
    Invoke-PnPQuery

    Write-host "Folder's Permission Inheritance is broken!!" -f Green   
}

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

เมื่อการสืบทอดสิทธิ์ของโฟลเดอร์เสียหาย คุณสามารถเพิ่มหรือลบผู้ใช้ออกจากโฟลเดอร์ได้:

  • SharePoint Online: เพิ่มผู้ใช้หรือกลุ่มลงในโฟลเดอร์สิทธิ์โดยใช้ PowerShell
  • SharePoint Online: วิธีลบผู้ใช้หรือกลุ่มออกจากการอนุญาตโฟลเดอร์โดยใช้ PowerShell

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