ค้นหาเว็บไซต์

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 ของคุณเป็นแบบอัตโนมัติ

บทความที่เกี่ยวข้อง