SharePoint Online:使用 PowerShell 的 Web 部件使用情况报告
要求:使用 PowerShell 从 SharePoint Online 页面获取所有 Web 部件。
SharePoint Online:如何从页面查找所有 Web 部件?
您是否正在寻找一种从 SharePoint Online 中的新式页面获取 Web 部件列表的方法,以进行故障排除或收集有关页面上特定 Web 部件的数据?好吧,在这篇文章中,我们将向您展示如何使用 PowerShell 从页面获取 Web 部件。还将共享 PowerShell 脚本,以从 SharePoint Online 网站的所有网站页面查找所有 Web 部件清单。
要使用 PowerShell CSOM 从 SharePoint Online 页面获取所有 Web 部件,请使用:
#Load SharePoint Online 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"
#Parameters
$SiteURL = "https://Crescent.sharepoint.com/sites/Vendors"
$PageServerRelativeURL = "/sites/Vendors/SitePages/About-Us.aspx"
#Setup Credentials to connect
$Cred = Get-Credential
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
#Get the page
$Page = $Ctx.Web.GetFileByServerRelativeUrl($PageServerRelativeURL)
$Ctx.Load($Page)
$Ctx.ExecuteQuery()
#Get all webparts from the page
$WPManager = $Page.GetLimitedWebPartManager([Microsoft.SharePoint.Client.WebParts.PersonalizationScope]::Shared)
$WebParts = $WPManager.Webparts
$Ctx.Load($WebParts)
$Ctx.ExecuteQuery()
#Iterate through all webparts in the page
ForEach($Webpart in $Webparts)
{
#Get Web part Properties
$WPProperties = $Webpart.WebPart.Properties
$Ctx.Load($WPProperties)
$Ctx.ExecuteQuery()
#Get Web part Properties
Write-Host "Webpart ID: " $Webpart.ID
Write-host "Title:" $WPProperties.FieldValues.Title
Write-Host "Hidden: " $WPProperties.FieldValues.Hidden
Write-Host "Allow Hide: " $WPProperties.FieldValues.AllowHide
Write-Host "Allow Close: " $WPProperties.FieldValues.AllowClose
Write-Host "`n"
}
此脚本从给定页面获取所有 Web 部件。
PnP PowerShell 从页面获取所有 Web 部件
同样,我们可以使用 PnP PowerShell 从 Web 部件页面查找 Web 部件,如下所示:
#Parameters
$SiteURL = "https://Crescent.sharepoint.com/sites/Vendors"
$PageServerRelativeURL = "/sites/vendors/SitePages/about-us.aspx"
#Connect to SharePoint Online site
Connect-PnPOnline -Url $SiteURL -Interactive
#Get All Web parts from the page
$Webparts = Get-PnPWebPart -ServerRelativePageUrl $PageServerRelativeURL
#Iterate through webparts
ForEach($Webpart in $Webparts)
{
#Get Web part properties
Write-Host "WebPart Id:" $Webpart.Id
Write-Host "Title:" $Webpart.WebPart.Title
Write-Host "Hidden:" $Webpart.WebPart.Hidden
Write-Host "Allow Hidden:" $Webpart.WebPart.Properties.FieldValues.AllowHide
}
要从新式页面获取 Web 部件,请使用:
#Parameters
$SiteURL = "https://Crescent.sharepoint.com/sites/vendors"
#Connect to SharePoint Online site
Connect-PnPOnline -Url $SiteURL -Interactive
#get the page
$Page = Get-PnPClientSidePage -Identity "Home.aspx"
#Get webparts from modern page
$WebParts = $Page.Controls
#Get web part Title and InstanceID
$Webparts | Select Title,InstanceId
查找所有 Web 部件使用清单并导出到 CSV
让我们从网站上的所有页面获取 Web 部件,并使用 PnP PowerShell 创建 CSV 报告。
#Parameters
$SiteURL = "https://Crescent.sharepoint.com/sites/vendors"
$CSVPath = "C:\Temp\Webparts.csv"
$WebPartsData = @()
#Connect to SharePoint Online site
Connect-PnPOnline -Url $SiteURL -Interactive
#Get all pages from "Site Pages" library
$SitePages = Get-PnPListItem -List "Site Pages"
#Iterate through each page
ForEach($Page in $SitePages)
{
#Get All Web parts from the page
$Webparts = Get-PnPWebPart -ServerRelativePageUrl $Page.FieldValues.FileRef
#Iterate through webparts and collect details
ForEach($Webpart in $Webparts)
{
#Get Web part properties
$WebPartsData += New-Object PSObject -Property @{
"PageUrl" = $Page.FieldValues.FileRef
"WebPart ID" = $Webpart.Id
"WebPart Title" = $Webpart.WebPart.Title
"Is Closed" = $Webpart.WebPart.IsClosed
"Hidden" = $Webpart.WebPart.Hidden
"Zone Index" = $Webpart.WebPart.ZoneIndex
"Allow Hide" = $Webpart.WebPart.Properties.FieldValues.AllowHide
}
}
}
#Export Web part data to CSV
$WebPartsData
$WebPartsData | Export-Csv -Path $CSVPath -NoTypeInformation
总之,在 SharePoint Online 中生成 Web 部件使用情况报告可以提供有关用户如何与平台交互的宝贵见解。按照本文中提供的 PowerShell 脚本,您应该能够生成 Web 部件使用情况报告并收集有关 SharePoint Online 环境中最常用的 Web 部件的数据。