如何使用Get-PnPWebPart按页面原有顺序获取SharePoint Web部件
使用Get-PnPWebPart返回的Web部件顺序默认不对应页面实际显示顺序,这是因为该命令是按Web部件内部存储的ID或其他标识排序,而非页面渲染顺序。要获取和页面一致的顺序,需要借助页面的CanvasContent1字段(存储页面布局的结构化JSON),步骤如下:
- 第一步:获取页面对象并提取Canvas布局内容
$page = Get-PnPPage -Identity "path-to-files/test.aspx" $canvasContent = $page.CanvasContent1
- 第二步:解析JSON并按页面顺序匹配Web部件
# 解析Canvas布局的JSON数据 $canvasJson = $canvasContent | ConvertFrom-Json # 获取所有Web部件 $webParts = Get-PnPWebPart -ServerRelativePageUrl "path-to-files/test.aspx" # 按照Canvas中定义的顺序筛选并排序Web部件 $sortedWebParts = $canvasJson.controls | ForEach-Object { $targetId = $_.webPartId $webParts | Where-Object { $_.Id -eq $targetId } } # 输出排序后的Web部件列表 $sortedWebParts
说明
页面的CanvasContent1字段包含了页面上所有Web部件的布局结构,其中controls数组严格遵循页面上Web部件的渲染顺序。通过匹配数组中每个元素的webPartId与Get-PnPWebPart返回的Web部件ID,就能得到和页面实际顺序完全一致的Web部件列表。
内容的提问来源于stack exchange,提问作者Sree
相关产品推荐
相关产品推荐

