ค้นหาลิงก์ที่แชร์ทั้งหมดในไลบรารีเอกสาร SharePoint Online
ข้อกำหนด: เราต้องการค้นหาลิงก์ทั้งหมดที่แชร์ผ่านฟีเจอร์ "แชร์" ใน SharePoint Online
PowerShell เพื่อสร้างรายงานลิงก์ที่แชร์ใน SharePoint Online
เมื่อมีการแชร์ไฟล์หรือโฟลเดอร์ใน SharePoint Online ระบบจะสร้างลิงก์ และผู้ใช้สามารถใช้ลิงก์นั้นเพื่อดูหรือแก้ไขตามสิทธิ์ที่ตั้งค่าไว้ระหว่างแชร์ใน SharePoint Online คุณอาจต้องการตรวจสอบลิงก์ที่แชร์ทั้งหมดเป็นบางครั้ง
นี่คือสคริปต์ PowerShell เพื่อสร้างรายงานสำหรับลิงก์ที่แชร์ทั้งหมดในไลบรารีเอกสาร SharePoint Online:
#Parameters
$SiteUrl = "https://crescent.sharepoint.com/sites/Marketing"
$ReportOutput = "C:\Temp\SharedLinks.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 Shared Links
$SharingInfo = [Microsoft.SharePoint.Client.ObjectSharingInformation]::GetObjectSharingInformation($Ctx, $Item, $false, $false, $false, $true, $true, $true, $true)
$ctx.Load($SharingInfo)
$ctx.ExecuteQuery()
ForEach($ShareLink in $SharingInfo.SharingLinks)
{
If($ShareLink.Url)
{
If($ShareLink.IsEditLink)
{
$AccessType="Edit"
}
ElseIf($shareLink.IsReviewLink)
{
$AccessType="Review"
}
Else
{
$AccessType="ViewOnly"
}
#Collect the data
$Results += New-Object PSObject -property $([ordered]@{
Name = $Item.FieldValues["FileLeafRef"]
RelativeURL = $Item.FieldValues["FileRef"]
FileType = $Item.FieldValues["File_x0020_Type"]
ShareLink = $ShareLink.Url
ShareLinkAccess = $AccessType
ShareLinkType = $ShareLink.LinkKind
AllowsAnonymousAccess = $ShareLink.AllowsAnonymousAccess
IsActive = $ShareLink.IsActive
Expiration = $ShareLink.Expiration
})
}
}
}
$global:counter++
}
$Results | Export-CSV $ReportOutput -NoTypeInformation
Write-host -f Green "Sharing Links Report Generated Successfully!"
PowerShell นี้สร้างรายงาน CSV พร้อมรายละเอียด:
- ชื่อของไฟล์หรือโฟลเดอร์
- URL ของไฟล์หรือโฟลเดอร์
- ประเภทไฟล์
- แบ่งปันลิงค์
- ประเภทการเข้าถึง - มีส่วนร่วมหรืออ่าน
- เป็นการเข้าถึงแบบไม่ระบุชื่อ
- วันหมดอายุ ฯลฯ
