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

[玩转系统] SharePoint Online:使用 PowerShell 更改母版页

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

SharePoint Online:使用 PowerShell 更改母版页


要求:更改 SharePoint Online 中的母版页。

如何在SharePoint Online中设置母版页?

如果要更改 SharePoint Online 中的母版页,请按照下列步骤操作:

  1. 登录到您的 SharePoint Online 站点 >> 单击“设置”齿轮图标 >>“站点设置”
  2. 从“站点设置”页面 >> 单击“外观和感觉”组下的“母版页”链接。此页面列出了 SharePoint Online 网站上可用的所有母版页。 (URL 快捷方式:/_Layouts/ChangeSiteMasterPage.aspx)
  3. 选择要在所有网站页面上使用的母版页。或者,您可以指定是否要“重置所有子网站以继承此网站母版页设置”,然后单击“确定”。

    [玩转系统] SharePoint Online:使用 PowerShell 更改母版页

  4. 这将设置 SharePoint Online 网站的母版页。在此页面中,您可以为您的网站设置主题和备用 CSS,以便为您的 SharePoint Online 网站添加更多品牌。
注意:如果网站设置中母版页链接不可用,您需要通过以下步骤激活 SharePoint 发布功能:如何在 SharePoint Online 中启用发布功能?

现在,要自动化更改自定义母版页的过程,让我们使用 PowerShell!

SharePoint Online:使用 PowerShell 更改母版页

以下是用于设置母版页的 SharePoint Online PowerShell,假设自定义母版页“Crescent.master”已部署到网站。


#Load SharePoint 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"

Function Set-CustomMasterPage()
{
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $MasterPage    
    )

    Try {
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Credentials

        #Get the Web
        $Web = $Ctx.web
        $Ctx.Load($Web)
        $Ctx.ExecuteQuery()
    
        #Frame Master page URL
        $MasterPageURL = "$($web.ServerRelativeUrl)/_catalogs/masterpage/$($MasterPage)"

        #Set Default Master page & Custom Master page
        $web.CustomMasterUrl = $MasterPageURL
        $Web.MasterUrl = $MasterPageURL
        $web.Update()
        $Ctx.ExecuteQuery()

        Write-Host "Master Page '$MasterPage' Applied on site '$SiteURL'" -f Green
    }
    Catch {
        write-host -f Red "Error Changing Master Page!" $_.Exception.Message
    }
}

#Set parameter values
$SiteURL="https://crescent.sharepoint.com/sites/sales/us"
$MasterPage="Crescent.master"

#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

#Call the function to change master page
Set-CustomMasterPage -SiteURL $SiteURL -MasterPage $MasterPage

此脚本设置给定站点(Web)的母版页。让我们稍微修改一下脚本,以更改网站集中所有子网站的母版页。

SharePoint Online PowerShell 设置母版页

要更改 SharePoint Online 网站集中的母版页(包括每个子网站),请使用以下脚本:


#Load SharePoint 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"

Function Set-CustomMasterPage()
{
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $MasterPage    
    )

    Try {
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Credentials

        #Get the Web
        $Web = $Ctx.web
        $Ctx.Load($Web)
        $Ctx.Load($Web.Webs)
        $Ctx.ExecuteQuery()
    
        #Frame Master page URL
        $MasterPageURL = "$($web.ServerRelativeUrl)/_catalogs/masterpage/$($MasterPage)"

        #Set Default Master page & Custom Master page
        $web.CustomMasterUrl = $MasterPageURL
        $Web.MasterUrl = $MasterPageURL
        $web.Update()
        $Ctx.ExecuteQuery()

        Write-Host "Master Page '$MasterPage' Applied on site '$SiteURL'" -f Green

        #Call the function recursively for all subsites
        Foreach ($Subsite in $Web.Webs)
        {
            #Call the function to apply master page in sharepoint online
            Set-CustomMasterPage -SiteURL $Subsite.URL -MasterPage $MasterPage
        }
    }
    Catch {
        write-host -f Red "Error Changing Master Page!" $_.Exception.Message
    }
}

#Set parameter values
$SiteURL="https://crescent.sharepoint.com/sites/sales/"
$MasterPage="seattle.master"

#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

#Call the function to change master page
Set-CustomMasterPage -SiteURL $SiteURL -MasterPage $MasterPage

请注意,您的自定义母版页必须在更改母版页之前上传(这是显而易见的!)。要将自定义母版页上传到 SharePoint Online,请使用:如何使用 PowerShell 将母版页上传到 SharePoint Online?

PnP PowerShell 更改 SharePoint Online 中的母版页

下面介绍如何使用 PnP PowerShell cmdlet Set-PnPMasterPage 更改 SharePoint Online 网站的母版页。


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$MasterPageServerRelativeUrl = "/sites/Marketing/_catalogs/masterpage/CrescentV2/CrescentV2.master"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Set Master page
Set-PnPMasterPage -MasterPageServerRelativeUrl $MasterPageServerRelativeUrl -CustomMasterPageServerRelativeUrl $MasterPageServerRelativeUrl

[玩转系统] SharePoint Online:使用 PowerShell 更改母版页

同样,要更改网站集中所有网站的母版页,请使用以下命令:


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$MasterPageServerRelativeUrl = "/sites/Marketing/_catalogs/masterpage/CrescentV2/CrescentV2.master"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)

#Get All Subsites from given site collection
$SubWebs = Get-PnPSubWeb

ForEach ($web in $SubWebs)
{
    #Set Master page for the web
    Set-PnPMasterPage -MasterPageServerRelativeUrl $MasterPageServerRelativeUrl `
          -CustomMasterPageServerRelativeUrl $MasterPageServerRelativeUrl -Web $web.ServerRelativeUrl
}

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

取消回复欢迎 发表评论:

关灯