PowerShell kullanarak SharePoint 2013/2016'daki Benzersiz İzinleri Silme (Bozuk Devralmayı Sıfırlama)


Çok sayıda SharePoint kitaplığı ve belgesinin özelleştirilmiş izinlerini sıfırlama gereksinimimiz var. Mirasın daha önce bozulduğu site/web/klasör/öğe düzeyi için izin mirasını sıfırlayabilir ve benzersiz izinleri silebiliriz. Örneğin bir kütüphane için:

  1. Kütüphanenize gidin, Kütüphane Ayarları'na tıklayın.
  2. Ayarlar sayfasında, kullanıcılar ve izinler altında "Bu belge kitaplığı için izinler" seçeneğine tıklayın
  3. Kalıtım grubundan şeritteki “Benzersiz İzinleri Sil” düğmesine tıklayın.

Site düzeyinde bunu Site ayarları >> Site İzinleri Bağlantısından yapmanız gerekir. Klasör/liste öğesi/dosya düzeyi için de aynısını şu şekilde yapabilirsiniz: Şeritteki "Paylaşılanlar" düğmesine tıklayın (aynısını öğelerin içerik menüsünden de alabilirsiniz) >> Gelişmiş >>'e tıklayın ve şuna tıklayın: “Benzersiz izinleri sil”.

İzin düzeyleri üst öğeden Devralınacak şekilde ayarlanır ve izin düzeyi değişiklikleri yansıtacak şekilde güncellenir. Peki!

Söylemeye gerek yok, benzersiz izinleri kaldırmak için her bir kitaplığı ve dosyayı tek tek almak sıkıcıdır; Bu PowerShell betiğini sihri gerçekleştirmek için yazdım! Web, liste, klasör ve liste öğesi düzeylerinde benzersiz izinleri silmek için PowerShell komut dosyalarımı burada bulabilirsiniz.

Önemli: SharePoint 2013 izinleri Web düzeyinden devralınır. Bu nedenle, kalıtımı en üst düzeyde keserseniz veya sıfırlarsanız - Tüm listeler, kitaplıklar, klasörler ve dosyalar ana webdeki gibi izinleri devralır - liste/klasör/öğe düzeyinde özelleştirilmiş izinler kaybolur!

PowerShell kullanarak Devralmayı site düzeyinde sıfırlayın:


Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue

#Variables for Web URL, List Name
$WebURL ="https://intranet.crescent.com/marketing"

#get the list object
$web = Get-SPWeb $WebURL

# Check if web has Unique permission - Root webs always uses Unique permission
if ( ($web.HasUniqueRoleAssignments) -and ($web.IsRootWeb -eq $false ) )
 {
      #Reset broken inheritance
      $web.ResetRoleInheritance()
      Write-host "Broken Inheritance Reset on web:" $web.URL
 }

SharePoint bir listedeki bozuk izinleri sıfırladı:


Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue

#Variables for Web URL, List Name
$WebURL ="https://intranet.crescent.com/marketing/"
$ListName ="Invoices" 

#get the list object
$List = (Get-SPweb $WebURL).lists.TryGetList($ListName)

# If List Exists with Unique permission
if ( ($list -ne $null) -and ($list.HasUniqueRoleAssignments) )
 {
      #Reset broken list inheritance
      $list.ResetRoleInheritance()
      Write-host "Broken Inheritance Reset on List:" $list.Title
 }

 <#To Reset Folder level inheritance, Use:
 foreach ($folder in $list.Folders) 
   {  
        if ($folder.HasUniqueRoleAssignments) 
        { 
            Write-Host "Resetting Folder inheritance at:" $folder.Url   
            $folder.ResetRoleInheritance()  
            $folder.Update() 
        } 
   }
 #>

Tüm listelerdeki Benzersiz izinleri silin:


Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue

#Variable for Web URL
$WebURL ="https://intranet.crescent.com/marketing/"

#get Web object
$Web = Get-SPWeb $WebURL

#Get Lists with Unique permissions - Exclude Hidden lists
$ListColl =  $web.lists | Where-Object  {  ($_.HasUniqueRoleAssignments -eq $true)  -and ($_.hidden -eq $false) }

#Enumerate through each list and reset permission inheritance
foreach($list in $ListColl) #if($list) #Exists
 {
      #Reset list inheritance
      $list.ResetRoleInheritance()
      Write-host "Broken Inheritance Reset on List:" $list.Title
 }

Liste Öğelerine ilişkin benzersiz izinleri kaldırın:


Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue

#Variables for Web URL, List Name
$WebURL ="https://intranet.crescent.com/marketing/"
$ListName ="Invoices" 

#Get the list items with Unique permissions
$ListItems = (Get-SPweb $WebURL).lists.TryGetList($ListName).Items | Where {$_.HasUniqueRoleAssignments}

# If List Exists with Unique permission
Foreach($ListItem in $ListItems)
 {
      #Reset broken list item inheritance
       $ListItem.ResetRoleInheritance()
      Write-host "Broken Inheritance Reset on List Item:" $ListItem.URL
 }

Ayrıca tüm liste öğelerinin benzersiz izinlerini tek bir satırda şu şekilde silebiliriz:


(Get-SPweb "https://intranet.crescent.com/marketing/").Lists["Invoices"].Items | Foreach-Object{ $_.ResetRoleInheritance() }

İlgili Mesajlar:

  • PowerShell kullanarak SharePoint'te Kalıtımı Kırın
  • SharePoint benzersiz izinler raporu
Benzersiz izinler genel olarak performansı öldürür! Bu nedenle, mümkün olan her yerde kaçının!

İlgili makaleler