SharePoint Online: PowerShell เพื่อทำซ้ำผ่านคอลเลกชันไซต์ทั้งหมด
ข้อกำหนด: PowerShell ทำซ้ำผ่านคอลเลกชันไซต์ทั้งหมดใน SharePoint Online Tenant
จะวนซ้ำไซต์ทั้งหมดใน SharePoint Online ได้อย่างไร
คุณเคยต้องการที่จะวนซ้ำไซต์ทั้งหมดในสภาพแวดล้อม SharePoint Online ของคุณหรือไม่? บางทีคุณอาจต้องการดูรายชื่อเจ้าของไซต์ทั้งหมด หรือเพียงระบุไซต์ทั้งหมดเพื่อที่คุณจะได้ดำเนินการเพิ่มเติมกับไซต์เหล่านั้นได้ ไม่ว่าด้วยเหตุผลใดก็ตาม PowerShell สามารถช่วยได้! ในบทความนี้ เรามาดูวิธีการใช้ PowerShell เพื่อวนรอบไซต์ทั้งหมดในผู้เช่า SharePoint Online ของคุณ
วนซ้ำไซต์ทั้งหมดใน SharePoint Online โดยใช้ PowerShell
มีวิธีที่แตกต่างกันในการทำเช่นนี้ ลองใช้ SharePoint Online PowerShell cmdlet Get-SPOSite เพื่อดึงข้อมูลไซต์ทั้งหมดในผู้เช่าแล้ววนซ้ำไซต์เหล่านั้น
#Parameter
$AdminSiteURL = "https://crescent-admin.sharepoint.com"
#Connect to SharePoint Online Admin Center
Connect-SPOService -Url $AdminSiteURL
#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
}
สคริปต์นี้จะเชื่อมต่อกับ SharePoint Online ก่อนโดยใช้ Connect-SPOService cmdlet และแจ้งให้คุณป้อนข้อมูลประจำตัวการเข้าสู่ระบบของคุณ จากนั้นจะรับคอลเลกชันไซต์ทั้งหมดในผู้เช่าโดยใช้ Get-SPOSite cmdlet สุดท้ายจะวนซ้ำแต่ละไซต์คอลเลกชันและดำเนินการ (ในกรณีนี้คือรับ URL ของไซต์) สิ่งนี้มีประโยชน์สำหรับงานต่างๆ เช่น การส่งออกข้อมูลไซต์หรือเพียงแค่รับรายชื่อไซต์ทั้งหมดในฟาร์ม
SharePoint Online: PnP PowerShell เพื่อวนซ้ำไซต์ต่างๆ
สคริปต์ PnP PowerShell นี้จะวนซ้ำไซต์ทั้งหมดในสภาพแวดล้อม SharePoint Online ของคุณและทำให้คุณได้รับ URL ของไซต์
#Parameter
$AdminSiteURL = "https://crescent-admin.sharepoint.com"
Try {
#Connect to Admin Center
Connect-PnPOnline -Url $AdminSiteURL -Interactive
#Get All Site collections
$SitesCollection = Get-PnPTenantSite
#Loop through each site collection
ForEach($Site in $SitesCollection)
{
Write-host -F Green $Site.Url
}
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
คุณสามารถปรับเปลี่ยนสคริปต์เพื่อดำเนินการใดๆ ที่คุณต้องการในแต่ละไซต์คอลเลกชันได้ ตัวอย่างเช่น คุณสามารถใช้ Set-PnPWeb cmdlet เพื่ออัปเดตธีมหรือการนำทางของไซต์ หรือใช้ Add-PnPUserToGroup cmdlet เพื่อเพิ่มผู้ใช้ลงในกลุ่ม
วนซ้ำทุกไซต์ - ยกเว้นไซต์บางประเภท
ลองยกเว้น Seach Center, Mysite Host, Redirect sites, App Catalog, Content Type Hub, eDiscovery และ Bot Sites และรับเว็บไซต์ทั้งหมดภายใต้เส้นทางที่ได้รับการจัดการ “/sites/” ได้อย่างไร
#Config Variables
$TenantAdminURL = "https://crescent-admin.sharepoint.com"
#Get Credentials to connect
$Cred = Get-Credential
#Connect to Admin Center using PnP Online
Connect-PnPOnline -Url $TenantAdminURL -Credentials $Cred
#Get All Site collections - Exclude: Seach Center, Redirect sites, Mysite Host, App Catalog, Content Type Hub, eDiscovery and Bot Sites
$SiteCollections = Get-PnPTenantSite | Where { $_.URL -like '*/sites*' -and $_.Template -NotIn ("SRCHCEN#0", "REDIRECTSITE#0", "SPSMSITEHOST#0", "APPCATALOG#0", "POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1")}
#Loop through each site collection
ForEach($Site in $SiteCollections)
{
Try {
Write-host "Processing Site:"$Site.URL -f Yellow
#Connect to the site
Connect-PnPOnline -Url $Site.URL -Credentials $Cred
#Get all document libraries from the site
$DocumentLibraries = Get-PnPList | Where-Object {$_.BaseType -eq "DocumentLibrary" -and $_.Hidden -eq $False -and $_.ItemCount -gt 0}
#Iterate through document libraries
ForEach ($List in $DocumentLibraries)
{
Write-host "`tTotal Number of Items in '$($List.Title)':" $List.itemCount -f Green
}
}
Catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
}
วิธีนี้จะมีประโยชน์หากคุณต้องการรับรายชื่อไซต์ทั้งหมด
สคริปต์ PowerShell CSOM เพื่อวนซ้ำผ่านคอลเลกชันไซต์ทั้งหมด
โปรดทราบว่าวิธี CSOM รับเฉพาะไซต์แบบคลาสสิกเท่านั้น (ไม่มีไซต์สมัยใหม่หรือไซต์การสื่อสารรวมอยู่ในแนวทางนี้!)
#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"
Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll"
#Set Parameters
$AdminCenterURL = "https://crescent-admin.sharepoint.com/"
Try {
#Setup Credentials to connect
$Cred= Get-Credential
#Setup the Context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminCenterURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Get the tenant object
$Tenant = New-Object Microsoft.Online.SharePoint.TenantAdministration.Tenant($Ctx)
#Get all site collections
$Sites= $Tenant.GetSiteProperties(0, $true)
$Ctx.Load($Sites)
$Ctx.ExecuteQuery()
ForEach($Site in $Sites)
{
Write-Host $Site.URL
}
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
โพสต์ที่เกี่ยวข้อง: SharePoint Online: PowerShell เพื่อรับไซต์คอลเลกชันและไซต์ย่อยทั้งหมด
บทสรุป
โดยสรุป การใช้ PowerShell เป็นวิธีที่สะดวกในการวนซ้ำไซต์คอลเลกชันทั้งหมดใน SharePoint Online และดำเนินการกับไซต์เหล่านั้น ด้วยการใช้สคริปต์ที่ให้ไว้ในบทช่วยสอนนี้ คุณสามารถเชื่อมต่อกับ SharePoint Online รับรายการไซต์คอลเลกชันทั้งหมดในผู้เช่า และวนซ้ำแต่ละไซต์คอลเลกชันเพื่อดำเนินการเฉพาะเจาะจงได้อย่างง่ายดาย สิ่งนี้มีประโยชน์เมื่อคุณต้องการดำเนินการแบบแบตช์บนไซต์คอลเลกชันหลายรายการ หรือเมื่อคุณต้องการทำให้กระบวนการจัดการสภาพแวดล้อม SharePoint Online ของคุณเป็นแบบอัตโนมัติ
