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

[玩转系统] 使用 PowerShell 更改 SharePoint 中的页面布局

作者:精品下载站 日期:2024-12-14 20:59:44 浏览:15 分类:玩电脑

使用 PowerShell 更改 SharePoint 中的页面布局


在基于发布网站模板的公共 Internet SharePoint 网站中,我们需要更新现有页面布局并创建新页面布局。因此,开发团队创建了新的页面布局,并根据所需的更改更新了现有的页面布局。使用这些更新的页面布局创建的任何页面都将反映这些更改。那么,使用旧页面布局创建的现有页面怎么样?需要切换几个页面的页面布局。

虽然可以通过 SharePoint Web 界面更改页面布局(单击编辑页面 >> 在“页面”选项卡下,单击“页面布局”并选择您想要设置的不同页面布局!),但更新需要几个小时所有现有页面的页面布局。因此,我编写了此脚本来使用 PowerShell 更改 SharePoint 2013 中的页面布局。

使用 PowerShell 更改 SharePoint 页面布局:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Variables for Web and Page URLs
$WebURL="https://portal.crescent.com/sites/sales/"
$PageURL="https://portal.crescent.com/sites/sales/Pages/About-us.aspx"
$PageLayout="https://portal.crescent.com/_catalogs/masterpage/GlobalFunctionsPageLayout.aspx"

#Get the web and page
$Web = Get-SPWeb $WebURL
$File = $Web.GetFile($PageURL)

#change page layout sharepoint 2013 powershell 
$File.CheckOut("Online",$null)
$File.Properties["PublishingPageLayout"] = $PageLayout
$File.Update()
$File.CheckIn("Page layout updated via PowerShell",[Microsoft.SharePoint.SPCheckinType]::MajorCheckIn)

$Web.Dispose() 

在另一种情况下,在站点迁移期间,我必须使用相同的方法使用 PowerShell 更改页面布局。
“此页面未使用有效的页面布局。要纠正问题,请编辑页面设置并选择有效的页面布局。”

[玩转系统] 使用 PowerShell 更改 SharePoint 中的页面布局

这是因为页面布局 URL 是硬编码在发布页面中的。当您将它们从一个站点移动到另一个站点时,我们必须对其进行更新。

SharePoint 2016 使用 PowerShell 更改页面布局:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Variables for Web and Page URLs
$WebURL="https://www.crescent.com/company-profile/"
$OldPageLayoutName="About-us.aspx"
$NewPageLayoutName="About-us-V2.aspx"

#Get the web and page
$Web = Get-SPWeb $WebURL

#Get Publishing Site and Web
$PublishingSite = New-Object Microsoft.SharePoint.Publishing.PublishingSite($Web.Site)
$PublishingWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web)

#Get New Page Layout
$SitePageLayouts = $PublishingSite.GetPageLayouts($false)
$NewPageLayout = $SitePageLayouts | ? {$_.Name -eq $NewPageLayoutName}

#Get Pages Library
$PublishingPages = $PublishingWeb.GetPublishingPages()

#Iterate throgh each page
foreach ($Page in $PublishingPages)
{
    if ($Page.Layout.Name -eq $OldPageLayoutName)
    {
        $Page.CheckOut()
        $Page.Layout = $NewPageLayout
        $Page.ListItem.Update();
        $Page.CheckIn("Page layout Updated via PowerShell")
    
        #$page.ListItem.File.Publish("")
        if ($Page.ListItem.ParentList.EnableModeration)
        {
            $Page.ListItem.File.Approve("Publishing Page Layout Updated!");
        }

     write-host "Updated Page layout on: "$Page.url
    }
}
$Web.Dispose()

上述脚本扫描具有现有旧页面布局的所有发布页面,并使用 PowerShell 更改 SharePoint 2013 中的页面布局。

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

取消回复欢迎 发表评论:

关灯