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:
- Đă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
- 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)
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.
- Đ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.
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
}

