Tìm kiếm trang web

SharePoint Online: Thay đổi trang chính bằng PowerShell


Yêu cầu: Thay đổi Trang chính trong SharePoint Online.

Làm cách nào để đặt trang chính trong SharePoint Online?

Nếu bạn muốn thay đổi trang chính trong SharePoint Online, hãy làm theo các bước sau:

  1. Đăng nhập vào trang SharePoint Online của bạn >> Nhấp vào Cài đặt Biểu tượng bánh răng >> Cài đặt trang
  2. Từ trang Cài đặt Trang >> Nhấp vào liên kết “Trang chính” trong nhóm Giao diện. Trang này liệt kê tất cả các trang chính có sẵn trên trang SharePoint Online của bạn. (Lối tắt URL: /_Layouts/ChangeSiteMasterPage.aspx)
  3. Chọn trang chính sẽ được sử dụng trên tất cả các trang của site. Theo tùy chọn, bạn có thể chỉ định xem bạn có muốn “Đặt lại tất cả các trang con để kế thừa cài đặt trang chính của trang này” hay không và nhấn OK.

  4. Điều này sẽ đặt trang chính cho trang SharePoint Online của bạn. Từ trang này, bạn có thể đặt chủ đề và CSS thay thế cho trang web của mình để thêm nhiều thương hiệu hơn nữa vào trang SharePoint Online của bạn.
Lưu ý: Nếu liên kết Trang Chính không sẵn dùng trong cài đặt trang, bạn cần kích hoạt tính năng Xuất bản SharePoint bằng các bước sau: Làm cách nào để Bật Tính năng Xuất bản trong SharePoint Online?

Bây giờ, để tự động hóa quá trình thay đổi Trang chính tùy chỉnh, hãy sử dụng PowerShell!

SharePoint Online: Thay đổi Trang chính bằng PowerShell

Đây là SharePoint Online PowerShell để đặt trang chính, giả sử trang chính tùy chỉnh “Crescent.master” đã được triển khai cho site.


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\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

Tập lệnh này đặt trang chính cho một trang web nhất định (web). Hãy thay đổi tập lệnh một chút để thay đổi trang chính cho tất cả các site con trong tuyển tập trang.

SharePoint Online PowerShell để thiết lập trang chính

Để thay đổi trang chính trong tuyển tập trang SharePoint Online, bao gồm từng trang con, hãy sử dụng tập lệnh này:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\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

Xin lưu ý, trang chính tùy chỉnh của bạn phải được tải lên trước khi thay đổi trang chính (điều này là hiển nhiên!). Để tải trang chính tùy chỉnh lên SharePoint Online, hãy sử dụng: Làm cách nào để tải trang Chính lên SharePoint Online bằng PowerShell?

PnP PowerShell để thay đổi trang chính trong SharePoint Online

Dưới đây là cách thay đổi trang chính của trang SharePoint Online bằng lệnh ghép ngắn PnP PowerShell Set-PnPMasterPage.


#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

Tương tự, để thay đổi trang chính của tất cả các site trong tuyển tập trang, hãy dùng như sau:


#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
}

Bài viết liên quan