แบ่งการสืบทอดสิทธิ์และเพิ่ม-ลบผู้ใช้ไปยังรายการ SharePoint โดยใช้ PowerShell
ตามค่าเริ่มต้น รายการ SharePoint และไลบรารีจะสืบทอดสิทธิ์จากไซต์แม่เมื่อสร้างขึ้น มีหลายครั้งที่คุณอาจต้องการใช้สิทธิ์เฉพาะในระดับรายการ SharePoint เช่น หากมีผู้ใช้ที่ควรเข้าถึงเฉพาะรายการเฉพาะในไซต์ SharePoint แต่ไม่ใช่วัตถุอื่นใด ดังนั้น เมื่อต้องการตั้งค่าสิทธิ์เฉพาะบนไซต์ รายการ ไลบรารี โฟลเดอร์ หรือรายการ SharePoint เราควรทำลายการสืบทอดสิทธิ์ก่อน เพียงทำตามขั้นตอนเหล่านี้:
- นำทางไปยังรายการหรือไลบรารี SharePoint เป้าหมายของคุณ
- คลิกที่การตั้งค่ารายการ >> จากนั้นคลิกการอนุญาตสำหรับรายการนี้
จากริบบิ้น คลิกที่ไอคอน "หยุดการรับสิทธิ์" ดังภาพด้านล่าง การทำลายการสืบทอดสิทธิ์จะไม่ลบสิทธิ์ที่มีอยู่ทั้งหมดทันที! สำเนาสิทธิ์ของผู้ปกครองจะถูกปรับใช้กับออบเจ็กต์ลูก (เช่น รายการ/รายการ) ก่อนที่สิทธิ์อนุญาตจะใช้งานไม่ได้
- ลบผู้ใช้หรือกลุ่มที่ไม่จำเป็นต้องมีสิทธิ์เข้าถึงรายการนี้
- ให้สิทธิ์แก่ผู้ใช้และกลุ่มเพิ่มเติมที่ต้องการเข้าถึงรายการนี้
SharePoint PowerShell ที่จะทำลายการสืบทอดสิทธิ์:
เมื่อต้องการหยุดการสืบทอดสิทธิ์บนไซต์หรือรายการ SharePoint ให้ใช้สคริปต์ PowerShell นี้
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"
$CopyParentPermissions = $True
#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)
If ($List -ne $null)
{
if ($List.HasUniqueRoleAssignments -eq $False)
{
$List.BreakRoleInheritance($CopyParentPermissions)
Write-host "Stopped Inheriting Permissions from the parent." -f Green
}
else
{
write-host "List is already using Unique Permissions!" -f Red
}
}
หากต้องการลบสิทธิ์ทั้งหมดที่สืบทอดมาจากรายการแล้ว ให้ตั้งค่าตัวแปร $CopyParentPermissions เป็น $False
เพิ่มสิทธิ์ในรายการ SharePoint โดยใช้ PowerShell:
เมื่อการอนุญาตถูกทำลายจากผู้ปกครอง เราสามารถเพิ่มหรือลบผู้ใช้ออกจากรายการโดยใช้ PowerShell ใช้ PowerShell นี้ใน SharePoint เพื่อเพิ่มสิทธิ์ให้กับรายการ
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"
#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)
If ($List -ne $null)
{
#Grant contribute Permission to a User account
$UserAccount="Crescent\Omar"
$User = $web.EnsureUser($UserAccount)
$RoleDefinition = $Web.RoleDefinitions["Contribute"]
$RoleAssignment = New-Object Microsoft.SharePoint.SPRoleAssignment($User)
$RoleAssignment.RoleDefinitionBindings.Add($RoleDefinition)
$List.RoleAssignments.Add($RoleAssignment)
$List.Update()
Write-host "Permissions Granted to User Account: $UserAccount" -f Green
#Grant Read access to the Members SharePoint Group
$GroupName="Crescent Intranet Members"
$Group = $Web.SiteGroups[$GroupName]
$RoleDefinition = $Web.RoleDefinitions["Read"]
$RoleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($Group)
$RoleAssignment.RoleDefinitionBindings.Add($RoleDefinition);
$List.RoleAssignments.Add($RoleAssignment)
$List.Update()
Write-host "Permissions Granted to SharePoint Group: $GroupName" -f Green
}
วิธีการเกี่ยวกับการลบสิทธิ์ออกจากรายการ SharePoint โดยใช้ PowerShell
ตรวจสอบให้แน่ใจว่าคุณได้ทำลายการสืบทอดสิทธิ์ก่อนที่จะเรียกใช้สคริปต์นี้
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"
#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)
If ($List -ne $null)
{
#Remove User Permissions from the List
$UserAccount="Crescent\Omar"
$User = $web.EnsureUser($UserAccount)
$List.RoleAssignments.Remove($User)
$List.Update()
Write-host "Permissions Removed from the User Account: $UserAccount" -f Green
#Revoke permission from a SharePoint Group
$GroupName="Crescent Intranet Members"
$Group = $Web.SiteGroups[$GroupName]
$List.RoleAssignments.Remove($Group)
$List.Update()
Write-host "Permissions Revoked from SharePoint Group: $GroupName" -f Green
}
PowerShell เพื่อลบสิทธิ์ทั้งหมดออกจากรายการ:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Configuration Parameters
$WebURL="https://intranet.crescent.com"
$ListName="Contacts"
#Get the List
$Web = Get-SPWeb $WebURL
$List = $web.Lists.TryGetList($ListName)
If ($List -ne $null)
{
#Get All permissions applied to List
$RoleAssignmentCount = $List.RoleAssignments.Count
#Remove All Permissions from the List
For ($i= $RoleAssignmentCount-1; $i -ge 0; $i--)
{
Write-host "Removing Permission from:"$List.RoleAssignments[$i].Member.name
$List.RoleAssignments.Remove($i)
}
}
