SharePoint Online: PowerShell kullanarak İzin Devralma Nasıl Kırılır?
Gereksinim: SharePoint Online'daki kullanıcılara ve gruplara liste veya kitaplık düzeyinde izinler verin. Belirli bir kullanıcı grubunun site düzeyinde okuma erişimi vardır ve gereklilik, belirtilen listeler ve kitaplıklar üzerinde düzenleme erişim haklarının sağlanmasıdır.
SharePoint Online'da izin devralmayı kesme:
Site koleksiyonunda izinler sağladığınızda, alt siteler, listeler, kitaplıklar, klasörler, belgeler ve öğeler gibi hiyerarşi altındaki güvenliği sağlanabilir herhangi bir nesne, izinleri üst öğesinden devralır. Ancak, benzersiz izinler atayarak bu güvenli hale getirilebilir nesnelerden herhangi birine ayrıntılı izin vermek istediğiniz durumlar vardır.
Liste veya öğe düzeyinde benzersiz izinler sağlamak iki adımdan oluşur: İlk adım olarak, izinleri üst öğeden devralmayı bırakın ve ardından kullanıcılara ve/veya gruplara izinler ekleyin. SharePoint Online'da izin devralmanın nasıl kesileceği aşağıda açıklanmıştır:
- Belgelerinizin depolandığı SharePoint kitaplığına gidin.
- Belgeyi seçin >> Şeritteki Yönet grubunun altındaki "Paylaşılanlar" seçeneğine tıklayın.
İzinler sayfasında, eğer liste izinleri üst öğeden devralıyorsa, “İzinleri devralmayı durdur” düğmesine tıklayarak izin devralmayı kesmemiz gerekir. İstemi bir kez onaylayın.
Artık, Hibe grubundaki İzinleri Ver düğmesini tıklatarak belirli liste veya liste öğesi izinlerine kullanıcıları ekleyebilir veya kaldırabilirsiniz.
İzinleri devralmayı bıraktığınızda - Tüm kullanıcılar ve gruplar ana nesneden alt nesneye kopyalanır. Bu noktadan itibaren, ana nesnede gelecekte yapılacak herhangi bir izin değişikliği artık çocuğu etkilemeyecektir!
PowerShell'in Bir Liste Öğesine İlişkin İzin Devralmasını Kırması:
Üst öğeden izin almayı durdurmak için SharePoint Online için PowerShell'i burada bulabilirsiniz.
#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"
#Config Parameters
$SiteURL= "https://crescent.sharepoint.com/sites/projects"
$ListName="Projects"
$ItemID=1
#Setup Credentials to connect
$Cred = Get-Credential
$Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Cred
#Get the List and Item
$List=$Ctx.web.Lists.GetByTitle($ListName)
$Item=$List.GetItemByID($ItemID)
#stop inheriting permissions sharepoint online powershell
$Item.BreakRoleInheritance($True, $True)
$ctx.ExecuteQuery()
Benzer şekilde, PowerShell'i kullanarak bir Listedeki tüm öğeler için devralmayı şu şekilde kesebilirsiniz:
#Load SharePoint Online 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 for Processing
$SiteURL = "https://Crescent.sharepoint.com/Sales"
$ListName = "Documents"
#Setup Credentials to connect
$Cred = Get-Credential
$Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
Try {
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Cred
#Get the List
$List=$Ctx.Web.Lists.GetByTitle($ListName)
$Ctx.Load($List)
$Ctx.ExecuteQuery()
#Get All List Items
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml ="<View Scope='RecursiveAll' />"
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
#Loop through each list item
For($i=0;$i -lt $ListItems.Count;$i++)
{
#Break Inheritance copying permissions from parent
$ListItems[$i].BreakRoleInheritance($True, $False)
}
$Ctx.ExecuteQuery()
write-host -f Green "Permission Inheritance Broken for All Items in the List '$ListName'"
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
SharePoint Online: PowerShell Kullanarak İzinleri Devralmayı Durdurun
Bu betiğe bazı hata işleme ekleyelim ve bir listenin izin devralmasını bozalım.
#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"
#Config Parameters
$SiteURL= "https://crescent.sharepoint.com/sites/Marketing/"
$ListName="Documents"
#Setup Credentials to connect
$Cred = Get-Credential
$Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
Try {
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Cred
#Get the List
$List=$Ctx.web.Lists.GetByTitle($ListName)
$Ctx.load($List)
$List.Retrieve("HasUniqueRoleAssignments")
$Ctx.ExecuteQuery()
#Check if list is inheriting permissions; Break permissions of the list, if its inherited
if($List.HasUniqueRoleAssignments -eq $False)
{
#sharepoint online break inheritance powershell
$List.BreakRoleInheritance($True,$True) #keep existing list permissions & Item level permissions
$Ctx.ExecuteQuery()
Write-host -f Green "Permission inheritance broken successfully!"
}
else
{
Write-Host -f Yellow "List is already using Unique permissions!"
}
}
Catch {
write-host -f Red "Error Granting Permissions!" $_.Exception.Message
}
Benzersiz izinleri sıfırlamak ve üst öğeden geri yüklemek için şunları kullanabilirsiniz: SharePoint Online: İzinleri Devralmak için PowerShell
PnP PowerShell, Bir Listenin İzin Devralmasını Kıracak
PowerShell PnP kullanarak SharePoint Online'da mirasın nasıl sonlandırılacağı aşağıda açıklanmıştır:
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$ListName ="Documents"
#Get Credentials to connect
$Cred = Get-Credential
Try {
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials $Cred
#Try to Get the List
$List = Get-PnPList -Identity $ListName
If($List)
{
#Break Permission Inheritance of the List
Set-PnPList -Identity $ListName -BreakRoleInheritance -CopyRoleAssignments
Write-Host -f Green "Permission Inheritance Broken for List!"
}
Else
{
Write-Host -f Yellow "Could not Find List '$ListName'"
}
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
Bu komut dosyası, üst öğeden izinleri kopyalamak için “CopyRoleAssignments” anahtarını kullanır. İzinleri temizlemek için “ClearSubscopes”u kullanabilirsiniz!
İlgili Gönderiler:
- Bir sitenin izin devralmasını kırmak için şunu kullanın: SharePoint Online: İzin Devralınması Nasıl Durdurulur ve Bir Alt Siteye Benzersiz Erişim Nasıl Kurulur?
- Bir SharePoint Online klasörünün izin devralmasını kırmak için şunu kullanın: SharePoint Online: Bir Klasörün İzin Devralmasını Kırmak için PowerShell
- SharePoint Online listesine Kullanıcı veya Grup Eklemek için: SharePoint Online: PowerShell'i kullanarak Listeye veya Kitaplığa Kullanıcı veya Grup Ekleme
- Kullanıcıyı veya Grubu SharePoint Online listesinden kaldırmak için: SharePoint Online: PowerShell'i kullanarak Kullanıcıyı veya Grubu Liste İzinlerinden Kaldırma
