Làm cách nào để có được tất cả các trang web SharePoint trực tuyến bằng PnP PowerShell?
Một trong những khách hàng của tôi gần đây đã yêu cầu tôi tải tất cả các trang web được trình bày trong môi trường SharePoint Online. Tôi đã thử PnP PowerShell cho việc này. Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách tải tất cả các trang SharePoint Online bằng PnP PowerShell.
Ở đây, tôi cũng sẽ chỉ cho bạn cách lấy tất cả các site nhóm SharePoint, site liên lạc, site SharePoint không được kết nối với nhóm Microsoft 365, v.v. Tập lệnh PnP PowerShell cũng sẽ hiển thị ngày tạo của tất cả các site SharePoint Online.
Nếu bạn chưa quen với PnP PowerShell, trước tiên hãy cài đặt nó bằng lệnh ghép ngắn bên dưới hoặc xem bài viết này, nơi tôi đã giải thích từng bước.
Install-Module -Name PnP.PowerShell -Force -AllowClobberNhận tất cả các trang web SharePoint Online bằng PnP PowerShell
Trước tiên, hãy để tôi chỉ cho bạn cách truy xuất tất cả các trang SharePoint bằng PnP PowerShell. Nó sẽ hiển thị URL trang web và ngày tạo.
# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive
# Retrieve all sites
$sites = Get-PnPTenantSite
# Output all sites with URL
Write-Output "All SharePoint Online Sites:"
$sites | ForEach-Object {
Write-host "Site Title:" $_.Title -"Site URL: " $_.URL
}Tôi đã thực thi đoạn script trên và bạn có thể thấy kết quả đầu ra trong ảnh chụp màn hình bên dưới:
Nếu bạn muốn xuất sang tệp Excel, bạn có thể sửa đổi tập lệnh như bên dưới:
# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive
# Retrieve all sites
$sites = Get-PnPTenantSite
# Prepare data for export
$siteData = $sites | ForEach-Object {
[PSCustomObject]@{
Title = $_.Title
URL = $_.Url
OwnernName = $_.OwnerEmail
}
}
# Export data to Excel
$siteData | Export-Excel -Path "C:\MyNewFolder\SharePointSites.xlsx" -AutoSize -Title "SharePoint Online Sites"Đọc Kiểm tra xem trang SharePoint có tồn tại bằng PnP PowerShell không
Nhận tất cả các trang web nhóm SharePoint Online bằng PnP PowerShell
Sẽ có những tình huống mà bạn có thể chỉ muốn lấy tất cả các site nhóm từ 11SharePoint Online bằng PnP PowerShell.
Dưới đây là tập lệnh PowerShell hoàn chỉnh để kết nối tất cả các site nhóm hiện đại với nhóm Microsoft 365.
# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive
# Retrieve all sites
$Sites = Get-PnPTenantSite -Template GROUP#0
Write-Output "Group Connected Team Sites:"
# Output all sites with URL
$Sites | ForEach-Object {
Write-host "Site Title:" $_.Title -"Site URL: " $_.URL
}Bạn có thể xem ảnh chụp màn hình bên dưới hiển thị tất cả các trang web của nhóm được kết nối với nhóm, vì tôi đã cung cấp -Template là GROUP#0.
Đây là tập lệnh hoàn chỉnh để tải tất cả các site nhóm SharePoint Online (bao gồm cả các site được kết nối với nhóm Microsoft 365) bằng PnP PowerShell.
# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive
# Retrieve all sites
$sites = Get-PnPTenantSite
$teamSites = $sites | Where-Object { $_.GroupId -ne $null }
# Output all sites with URL
Write-Output "All SharePoint Online Sites:"
$teamSites | ForEach-Object {
Write-host "Site Title:" $_.Title -"Site URL: " $_.URL
}Bạn có thể thấy kết quả đầu ra trong ảnh chụp màn hình bên dưới sau khi tôi thực thi tập lệnh PowerShell ở trên bằng mã VS.
Nhận tất cả các trang liên lạc trực tuyến SharePoint bằng PnP PowerShell
Thực sự dễ dàng để có được tất cả các site liên lạc bằng PnP PowerShell trong SharePoint Online. Bạn chỉ cần truyền mẫu vào Get-PnPTenantSite như sau: Get-PnPTenantSite -Template SitePAGEPUBLISHING#0
Đây là kịch bản hoàn chỉnh.
# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive
# Retrieve all sites
$communicationSites = Get-PnPTenantSite -Template SITEPAGEPUBLISHING#0
Write-Output "Communication Sites:"
# Output all sites with URL
$communicationSites | ForEach-Object {
Write-host "Site Title:" $_.Title -"Site URL: " $_.URL
}Tôi đã thực thi tập lệnh PowerShell ở trên và bạn có thể thấy kết quả đầu ra chính xác trong ảnh chụp màn hình bên dưới:
Tôi hy vọng bây giờ bạn đã biết cách tải tất cả các site liên lạc SharePoint Online bằng PnP PowerShell.
Phần kết luận
Trong hướng dẫn này, tôi đã giải thích cách có được tất cả các trang SharePoint bằng PnP PowerShell. Và còn có:
- Nhận tất cả các site nhóm hiện đại được kết nối với nhóm Microsoft 365 bằng PnP PowerShell
- Nhận tất cả các site liên lạc bằng PnP PowerShell.



