当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:使用 PowerShell 的 Web 部件使用情况报告

作者:精品下载站 日期:2024-12-14 15:37:36 浏览:11 分类:玩电脑

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\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\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 部件的数据。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯