PowerShell kullanarak Salt Okunur Modda SharePoint Listesi veya Kitaplığı Nasıl Yapılır?


Gereksinim: SharePoint listesini veya belge kitaplığını salt okunur moda ayarlayın.

SharePoint Listesini Salt Okunur hale nasıl getirebilirim?

SharePoint listesini salt okunur olarak ayarlamanın doğrudan bir yolu yoktur! Salt okunur mod yalnızca SharePoint site koleksiyonlarında (Site Koleksiyonunu Salt Okunur Hale Getirme) veya içerik veritabanlarında (SharePoint İçerik Veritabanını Salt Okunur Moduna Ayarla) ayarlanabilir. Ancak tüm kullanıcı izinlerini "Salt Okunur" olarak değiştirerek bir SharePoint listesini salt okunur hale getirebiliriz.

Bu yöntemler Çiftlik Yöneticilerini, Site Koleksiyonu Yöneticilerini kontrol etmez!

SharePoint kullanıcı arayüzünden bir SharePoint listesini veya kitaplığını salt okunur hale getirme:

Bir SharePoint listesini veya kitaplığını salt okunur hale getirmeniz gerektiyse, bunu kullanıcı arayüzünü kullanarak yapmanın doğrudan bir yolu olmadığını fark etmiş olabilirsiniz. Ancak üzerindeki tüm izinleri değiştirerek salt okunur modda bir SharePoint listesi oluşturabiliriz.

  1. Bu liste için Liste Ayarları >> İzinler'e gidin
  2. Şeritteki “İzinleri Devralmayı Durdur” düğmesine tıklayın ve istemi onaylayın
  3. Tüm kullanıcıları seçin >> “Kullanıcı İzinlerini Düzenle” düğmesine tıklayın. Bu, “İzinleri Düzenle” sayfasına yönlendirir. İzin seç kısmından “Oku”yu seçin ve “Tamam”a tıklayın.
  4. Artık tüm kullanıcı izinlerinin “Okuma” olarak değiştirildiğini göreceksiniz.

Aynı yöntem, belge kitaplıklarını SharePoint'te salt okunur hale getirmek için de çalışır.

PowerShell'i kullanarak SharePoint Listesini Salt Okunur moduna değiştirin:

SharePoint listesini salt okunur olarak değiştirmek için PowerShell'i kullanalım.


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration Parameters
$SiteURL="https://intranet.crescent.com/"
$ListName= "Projects"

#Get the Web and List
$Web = Get-SPWeb $SiteURL
$List = $Web.Lists.TryGetList($ListName)

#Break Permissions of the List
If ($List.HasUniqueRoleAssignments -eq $false)
{
    $List.BreakRoleInheritance($true)
}

#Get Read Permission Level
$ReadPermission = $web.RoleDefinitions["Read"]

#Get All User & Groups granted Permissions to the List 
ForEach ($RoleAssignment in $List.RoleAssignments) 
{
    Write-host "Resetting Permissions for :"$RoleAssignment.Member.Name

    #Remove All permissions
    $RoleAssignment.RoleDefinitionBindings.RemoveAll()
    $RoleAssignment.RoleDefinitionBindings.Add($ReadPermission)
    $RoleAssignment.Update()
}

Bu, listeyi Salt okunur olarak ayarlar. Ama durun, bir sorun var! Yukarıdaki kullanıcı arayüzü yöntemi veya PowerShell betiği, tüm izinleri salt okunur olarak sıfırlar; güvenlik sorumlusunun (Ör. Kullanıcı, Grup vb.) zaten "Salt Görüntüleme" veya "Sınırlı Erişim" gibi izinlere sahip olması önemli değildir. Öyleyse Okuma, Salt Görüntüleme, Kısıtlı Okuma ve Sınırlı Erişim dışındaki izinleri değiştirmek için biraz ince ayar yapalım.

Sınırlı Erişim, bir kullanıcıya bozuk izin devralımına sahip bir alt nesneye izinler atandığında otomatik olarak verilen özel bir İzin Düzeyi'dir. Örneğin. Bir Liste öğesine izin verdiğinizde, kullanıcının listeye erişimi yoksa, SharePoint otomatik olarak Liste düzeyinde "Sınırlı Erişim" verir!

SharePoint Kitaplığını salt okunur hale getirmek için PowerShell:

Kullanıcıların listede veya kitaplıkta değişiklik yapmasını kısıtlamak istiyorsanız bu yararlı olabilir.


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration Parameters
$SiteURL="https://intranet.crescent.com/"
$ListName= "Projects"

#Get the Web and List
$Web = Get-SPWeb $SiteURL
$List = $Web.Lists.TryGetList($ListName)

#Break Permissions of the List
If ($List.HasUniqueRoleAssignments -eq $false)
{
    $List.BreakRoleInheritance($true)
}

#Get Read Permission Level
$ReadPermission = $web.RoleDefinitions["Read"]

#Get All User & Groups granted Permissions to the List 
ForEach ($RoleAssignment in $List.RoleAssignments) 
{
    Write-host "Resetting Permissions for :"$RoleAssignment.Member.Name -f Yellow

    #Replace All other permissions with "Read" if its not granted already
    $RoleDefinitionBindings = $RoleAssignment.RoleDefinitionBindings
    Foreach($RoleDefBinding in $RoleDefinitionBindings)
    {
        IF( ($RoleDefBinding.Name -ne "Read") -and ($RoleDefBinding.Name -ne "Restricted Read") -and ($RoleDefBinding.Name -ne "View Only") -and ($RoleDefBinding.Name -ne "Limited Access") )
        {
            #Grant Read ACcess if its not present
            If(!($RoleAssignment.RoleDefinitionBindings.Contains($ReadPermission)))
            {
                $RoleAssignment.RoleDefinitionBindings.Add($ReadPermission)
                $RoleAssignment.Update()
                Write-host "Added Read Permissions to "$RoleAssignment.Member.Name -ForegroundColor Green
            }
        }
        else 
        { 
            continue;
        }
    }

    #Remove All permissions other than Read or Similar
    $RoleDefinitionBindings = $RoleAssignment.RoleDefinitionBindings
    For($i=$RoleDefinitionBindings.Count-1; $i -ge 0; $i--)
    {
        $RoleDefBinding = $RoleAssignment.RoleDefinitionBindings[$i]        

        IF( ($RoleDefBinding.Name -eq "Read") -or ($RoleDefBinding.Name -eq "Restricted Read") -or ($RoleDefBinding.Name -eq "View Only") -or ($RoleDefBinding.Name -eq "Limited Access") )
        {
            continue;
        }
        Else
        {
            $RoleAssignment.RoleDefinitionBindings.Remove($RoleAssignment.RoleDefinitionBindings[$i])
            $RoleAssignment.Update()
            Write-host  Removed  $RoleDefBinding.Name Permissions from $RoleAssignment.Member.Name -ForegroundColor Red
        }
    }
}

Listenin mevcut izinlerini yedeklemek ve gerektiğinde izinleri geri yüklemek iyi bir fikir değil mi?

İlgili makaleler