SharePoint Online: PowerShell để có được tất cả các tuyển tập trang và trang con
Yêu cầu: SharePoint Online PowerShell để tải tất cả tuyển tập trang và trang con.
SharePoint Online PowerShell để liệt kê tất cả tuyển tập trang và trang con
Bạn có cần lấy danh sách tất cả các site và site con trong môi trường SharePoint Online của mình không? Truy xuất danh sách tất cả các site và site con trong SharePoint Online theo cách thủ công có thể là một quá trình tốn thời gian và dễ xảy ra lỗi, đặc biệt nếu bạn có môi trường SharePoint lớn với nhiều site và site con. PowerShell khiến mọi việc trở nên dễ dàng! Sử dụng PowerShell, bạn có thể nhanh chóng và dễ dàng truy xuất danh sách toàn diện về tất cả các site và site con trong SharePoint Online.
Trong bài viết này, chúng ta sẽ xem xét cách lấy tất cả tuyển tập site và site con trong SharePoint Online bằng PowerShell từ đối tượng thuê SharePoint Online của bạn. Đây là CSOM PowerShell để liệt kê tất cả các site và site con trong SharePoint Online:
Import-Module Microsoft.Online.SharePoint.Powershell
#Config Parameters
$AdminSiteURL="https://crescent-admin.sharepoint.com"
#Get Credentials to connect to SharePoint Admin Center
$Cred = Get-Credential
#Function to get all subsites of a site
Function Get-SPOWeb($WebURL)
{
#Setup credentials to connect
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Get Web information and subsites
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($webURL)
$Context.Credentials = $Credentials
$Web = $context.Web
$Context.Load($web)
$Context.Load($web.Webs)
$Context.executeQuery()
#Iterate through each subsite in the current web
foreach ($Subweb in $web.Webs)
{
#Get the web object
$Subweb
#Call the function recursively to process all subsites underneath the current web
Get-SPOWeb($Subweb.url)
}
}
#Connect to SharePoint Online Admin Center
Connect-SPOService -Url $AdminSiteURL -Credential $Cred
#Get All site collections
$SiteCollections = Get-SPOSite -Limit All
#Traverse through each site collection and get their subsits
Foreach ($Site in $SiteCollections)
{
Write-Host $Site.Url
$AllWebs = Get-SPOWeb $Site.Url
$AllWebs | ForEach-Object { Write-Host $_.URL }
}
Điều này sẽ giúp bạn có được danh sách tuyển tập trang và các trang con của chúng. Đây là một kịch bản khác:
SharePoint Online: PowerShell để liệt kê tất cả các trang con trong tất cả tuyển tập trang
Hãy lấy các site con từ tất cả tuyển tập site từ đối tượng thuê. Đây là tập lệnh PowerShell để tải tất cả tuyển tập trang và trang con trong SharePoint Online:
#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 to get each subsite in site collection
Function Get-SPOWebs($SiteURL)
{
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#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()
#Do something
Write-host $Web.Url
#Loop through each each subsite in site
Foreach($Web in $web.Webs)
{
Get-SPOWebs $Web.Url
}
}
#Variables
$AdminCenterURL = "https://Crescent-admin.sharepoint.com"
#Setup Credentials to connect
$Cred= Get-Credential
#Connect to SharePoint Online
Connect-SPOService -url $AdminCenterURL -Credential ($Cred)
#Get all Site collections
$Sites = Get-SPOSite -Limit All
#Loop through site collections
ForEach($Site in $Sites)
{
#Call the function to get all sub-sites in site collection
Get-SPOWebs($Site.URL)
}
Quản trị viên SharePoint có thể sử dụng PowerShell này để nhanh chóng nhận được danh sách tất cả các site và site con trong đối tượng thuê của họ.
PnP PowerShell để có được tất cả các trang web và trang con trong SharePoint Online
Hãy xem cách lấy tất cả các site và site con trong SharePoint Online bằng mô-đun PnP PowerShell. Tập lệnh này truy xuất đệ quy tất cả tuyển tập trang và các trang con của chúng bằng cách sử dụng PnP PowerShell.
#Set Variables
$SiteURL = "https://crescent.sharepoint.com"
#Get Credentials to connect
$Cred = Get-Credential
Try {
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials $Cred
#Get All Site collections
$SitesCollection = Get-PnPTenantSite
#Loop through each site collection
ForEach($Site in $SitesCollection)
{
Write-host -F Green $Site.Url
Try {
#Connect to site collection
Connect-PnPOnline -Url $Site.Url -Credentials $Cred
#Get Sub Sites Of the site collections
$SubSites = Get-PnPSubWeb -Recurse
ForEach ($web in $SubSites)
{
Write-host `t $Web.URL
}
}
Catch {
write-host -f Red "`tError:" $_.Exception.Message
}
}
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
Tập lệnh này lấy tất cả các trang và trang con trong SharePoint Online bằng PnP PowerShell.
Nhận số lượng trang con trong mỗi tuyển tập trang trong SharePoint Online:
Trong một tình huống khác, chúng tôi muốn nhanh chóng nhận được số lượng trang con (tổng cộng theo cách đệ quy) cho mỗi tuyển tập trang trong đối tượng thuê.
#Parameters
$TenantAdminURL = "https://Crescent-Admin.SharePoint.com"
#Connect to Admin Center
$Cred = Get-Credential
Connect-PnPOnline -Url $TenantAdminURL -Credentials $Cred
#Get All Site collections - Exclude: Seach Center, Redirect site, Mysite Host, App Catalog, Content Type Hub, eDiscovery and Bot Sites
$SitesCollections = Get-PnPTenantSite | Where -Property Template -NotIn ("SRCHCEN#0","REDIRECTSITE#0", "SPSMSITEHOST#0", "APPCATALOG#0", "POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1")
#Loop through each SharePoint site collection
$SubSitesData = @()
ForEach($Site in $SitesCollections)
{
#Connect to site collection
Write-host -f Yellow "Processing site:"$Site.Url
Connect-PnPOnline -Url $Site.Url -Credentials $Cred
#Get the SubSites of the site collection
$Webs = Get-PnPSubWeb -Recurse
#Collect Subsites count
$SubSitesData += New-Object PSObject -Property ([ordered]@{
SiteName = $Site.Title
URL = $Site.URL
SubSitesCount = $Webs.Length
})
}
$SubSitesData
Xuất danh sách tất cả các trang web và trang con sang CSV
Làm cách nào để có được tất cả các trang SharePoint và trang con trong PowerShell? Dưới đây là các lệnh ghép ngắn PnP PowerShell Get-PnPTenantSite và Get-PnPSubWeb để lấy tất cả các tuyển tập trang và trang con trong đối tượng thuê của bạn và xuất chúng sang tệp CSV.
#Set Variables
$TenantURL = "https://crescent.sharepoint.com"
$ExportFile = "C:\Temp\SitesandSubsites.csv"
$AllSitesList = @()
Try {
#Connect to PnP Online
Connect-PnPOnline -Url $TenantURL -Interactive
#Get All Site collections - Exclude certain site templates such as personal sites
$SiteCollections = Get-PnPTenantSite | Where -Property Template -NotIn ("SRCHCEN#0","REDIRECTSITE#0", "SPSMSITEHOST#0", "APPCATALOG#0", "POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1")
Write-host "Total Number of site collections:"$SiteCollections.count
#Loop through each site collection
ForEach($Site in $SitesCollections)
{
#Connect to site collection
Connect-PnPOnline -Url $Site.Url -Interactive
#Get all Top-level site and Sub Sitess Of the SharePoint Online site collection
Get-PnPSubWeb -Recurse -IncludeRootWeb -Includes ParentWeb | ForEach-Object {
$AllSitesList += New-Object PSObject -property $([ordered]@{
SiteName = $_.Title
SiteURL = $_.Url
IsSubSite = If($_.ParentWeb.Title -eq $null) {$False} Else {$True}
})
}
}
}
Catch {
Write-host -f Red "Error:" $_.Exception.Message
}
#get all sites and subsites in sharepoint online
$AllSitesList
#Export All sites and Subsites list to a CSV list
$AllSitesList | Export-CSV -Path $ExportFile -NoTypeInformation -Encoding UTF8
Tóm lại, chúng ta đã thảo luận về cách lấy tất cả các site và site con trong SharePoint bằng PowerShell. Bằng cách sử dụng các tập lệnh trong hướng dẫn này, bạn có thể truy xuất danh sách tất cả các trang và trang con trong môi trường SharePoint Online của mình một cách nhanh chóng và dễ dàng.
Các câu hỏi thường gặp:
Làm cách nào để bật các site con trong SharePoint Online?
Để bật các trang con trong SharePoint Online, hãy đăng nhập vào Trung tâm quản trị SharePoint Online >> Nhấp vào Cài đặt >> Nhấp vào liên kết “Trang cài đặt cổ điển”. Trên trang cài đặt, trong phần “Tạo trang con”, hãy đặt tùy chọn thành “Bật tạo trang con cho tất cả các trang web”.
Thông tin thêm: Bật trang con trong SharePoint Online
Có thể tạo bao nhiêu trang con trong SharePoint Online?
2.000 trang con cho mỗi bộ sưu tập trang web! Tuy nhiên, việc có một số lượng lớn các site con có thể có tác động đến hiệu suất và khả năng quản lý môi trường SharePoint của bạn!
Làm cách nào để cấp quyền cho site con trong SharePoint Online?
Giả sử bạn có một trang con với các quyền duy nhất, hãy làm theo các bước sau để cấp quyền truy cập vào một trang con:
1. Điều hướng đến trang SharePoint Online mà bạn muốn cấp quyền cho trang con.
2. Nhấp vào biểu tượng bánh răng ở góc trên bên phải của trang và chọn “Cài đặt trang web”.
3. Trong phần “Người dùng và quyền”, hãy nhấp vào “Quyền của trang web”.
4. Nhấp vào “Cấp quyền” trong dải băng ở đầu trang.
5. Nhập địa chỉ email hoặc tên nhóm của người dùng hoặc nhóm trang con mà bạn muốn cấp quyền.
6. Chọn mức cấp phép bạn muốn cấp cho người dùng hoặc nhóm site con. Các cấp độ quyền hiện có là Kiểm soát hoàn toàn, Thiết kế, Chỉnh sửa, Đóng góp, Đọc và Truy cập có giới hạn.
7. Nhấp vào “Chia sẻ” để cấp quyền cho người dùng hoặc nhóm trang con.
Người dùng hoặc nhóm trang con sẽ nhận được thông báo qua email có liên kết đến trang con. Họ sẽ cần nhấp vào liên kết và đăng nhập bằng tài khoản Microsoft của họ để truy cập trang con.
Bài viết liên quan:
- Làm cách nào để có được tất cả các bộ sưu tập trang web trong SharePoint Online bằng PowerShell?
- SharePoint Online: PowerShell để có được tất cả các trang con
- SharePoint Online: Làm cách nào để tạo một trang con bằng PowerShell?
