SharePoint Online'da Paylaşılan Bağlantılar İzin Raporu Oluşturma


Gereksinim: SharePoint Online'ın "Paylaş" özelliği aracılığıyla paylaşılan tüm bağlantılar için bir izin raporu oluşturun.

PowerShell'i kullanarak SharePoint Çevrimiçi Belge Kitaplığındaki Tüm Paylaşılan Bağlantıların İzinlerini Alın

SharePoint Online'da bir dosya veya klasörü paylaştığınızda, belirli bir öğenin izin devralınması bozulur ve benzersiz izinler verilir.

Bir belge kitaplığındaki tüm paylaşılan bağlantıları taramak ve bunları bir CSV raporuna aktarmak için kullanılan PowerShell betiği buradadır.


# Parameters
$SiteUrl = "https://Crescent.sharepoint.com/sites/Marketing"
$ReportOutput = "C:\Temp\SharingLinkPermissions.csv"
$ListName = "Branding"
   
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
$Ctx = Get-PnPContext
$Results = @()
$global:counter = 0

#Get all list items in batches
$ListItems = Get-PnPListItem -List $ListName -PageSize 2000
$ItemCount = $ListItems.Count
  
#Iterate through each list item
ForEach($Item in $ListItems)
{
    Write-Progress -PercentComplete ($global:Counter / ($ItemCount) * 100) -Activity "Getting Shared Links from '$($Item.FieldValues["FileRef"])'" -Status "Processing Items $global:Counter to $($ItemCount)";

    #Check if the Item has unique permissions
    $HasUniquePermissions = Get-PnPProperty -ClientObject $Item -Property "HasUniqueRoleAssignments"
    If($HasUniquePermissions)
    {
        #Get Users and Assigned permissions
        $RoleAssignments = Get-PnPProperty -ClientObject $Item -Property RoleAssignments
        ForEach($RoleAssignment in $RoleAssignments)
        {
            $Members = Get-PnPProperty -ClientObject $RoleAssignment -Property RoleDefinitionBindings, Member
            #Get list of users 
            $Users = Get-PnPProperty -ClientObject ($RoleAssignment.Member) -Property Users -ErrorAction SilentlyContinue
            #Get Access type
            $AccessType = $RoleAssignment.RoleDefinitionBindings.Name
            If ($RoleAssignment.Member.Title -like "SharingLinks*")
            {
                If ($Users -ne $null) 
                {
                    ForEach ($User in $Users)
                    {
                        #Collect the data
                        $Results += New-Object PSObject -property $([ordered]@{ 
                        Name  = $Item.FieldValues["FileLeafRef"]            
                        RelativeURL = $Item.FieldValues["FileRef"]
                        FileType = $Item.FieldValues["File_x0020_Type"]
                        UserName = $user.Title
                        UserAccount  = $User.LoginName
                        Email  =  $User.Email
                        Access = $AccessType
                        })
                    }
                       
                }
            }        
        }
    }       
    $global:counter++
}
$Results | Export-CSV $ReportOutput -NoTypeInformation
Write-host -f Green "Sharing Links Report Generated Successfully!"

Bu komut dosyası, bir SharePoint Online belge kitaplığından bir CSV raporuna yönelik tüm Paylaşılan Bağlantıları oluşturur. PowerShell ile SharePoint Online'da paylaşılan bağlantıları kaldırmak için PowerShell kullanarak SharePoint Online'daki Tüm Paylaşılan Bağlantılar Nasıl Kaldırılır? konusuna bakın.

İlgili makaleler