使用Get-PNPWebPart获取SharePoint Web部件列表



在SharePoint Online中,我创建了一个开箱即用的网站,并添加了几个WebPart。我想获得Web部件的列表,并将它们添加到其他网站。

我正在使用命令Get-PNPWebPart从站点获取WebParts。

这是我尝试过的代码。

$user = "[username]"
$password = ConvertTo-SecureString "[password]" -AsPlainText -Force
$credentials = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $user, $password

$siteURL = "https://[tenant].sharepoint.com/Sites/[site name]"

Connect-PnPOnline -Url $siteURL -Credentials $credentials
$serverRelativePageUrl = "/sites/[site name]/SitePages/Home.aspx"
$webparts = Get-PNPWebPart -ServerRelativePageUrl $serverRelativePageUrl
foreach($webpart in $webparts)
{
Write-Host "WebPart title:" $webpart.WebPart.Title
}

当我运行这个时,我没有得到任何错误,但$webparts变量是空的。

当我尝试从SharePoint网站获取Web部件列表时,为什么$webParts变量为空?

Get-PnPWebPart对于在现代页面中获取web部件无效(经典页面可以使用(。

相反,请使用下面的代码片段在Modern Site Home.aspx中获取web部件:

$user = "user@tenant.onmicrosoft.com"
$password = ConvertTo-SecureString "password" -AsPlainText -Force
$credentials = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $user, $password

$siteURL = "https://tenant.sharepoint.com/sites/JerryModernTeam"
Connect-PnPOnline -Url $siteURL -Credentials $credentials

$page=Get-PnPClientSidePage -Identity "Home.aspx"

$webParts = $page.Controls  
#if there are more than one webparts  
foreach($webpart in $webParts) {  
Write - Host "WebPart Id "  
$webpart.InstanceId  
Write - Host "Title "  
$webpart.Title  
}  

参考:

使用PnP PowerShell 从现代网站页面添加、删除和获取所有Web部件

最新更新