SharePoint Online: PowerShell kullanarak Tüm Site Koleksiyonlarını Alın


Gereksinim: SharePoint Online'da PowerShell'i kullanarak tüm site koleksiyonlarını alın.

SharePoint Online'da Site Koleksiyonlarının Listesini Nasıl Alabilirim?

Site koleksiyonu, genellikle departmana, projeye, bölgeye, işleve veya iş birimine göre düzenlenen bir site grubudur. Bir SharePoint Online ortamını yönetmekten sorumluysanız er ya da geç kiracılığınızdaki tüm site koleksiyonlarının bir listesini almanız gerekecektir. Neyse ki PowerShell, SharePoint Online ortamınız hakkında bilgi toplamayı kolaylaştırıyor. Bu blog gönderisi, kiracınızdaki tüm site koleksiyonlarının bir listesini almak için PowerShell'i nasıl kullanacağınızı gösterecektir. Ayrıca sonuçları raporlama amacıyla CSV veya HTML dosyasına nasıl aktaracağınızı da öğreneceksiniz.

SharePoint Yönetim Merkezi'ni kullanarak SharePoint Çevrimiçi Kiracısındaki Tüm Siteleri Görüntüleyin

SharePoint Online'daki tüm site koleksiyonları nasıl görüntülenir? SharePoint Online site koleksiyonlarının bir listesini almak istiyorsanız, SharePoint yönetim merkezine (https://Alanınız-admin.sharepoint.com) gidebilirsiniz >> “Siteler”i genişletin > > Aktif Siteler.

Bu size SharePoint Online'daki tüm site koleksiyonlarının listesini verir. Araç çubuğundaki "Dışa Aktar" düğmesini tıklayarak bunları CSV'ye aktarabilirsiniz. Tüm site koleksiyonlarını almak için SharePoint Online PowerShell'i görelim.

PowerShell kullanarak SharePoint Online'da Site Koleksiyonu Nasıl Alınır?

SharePoint Online yöneticisi olarak, SharePoint ortamınızdaki belirli bir site koleksiyonuyla ilgili bilgileri almanız gerekir. PowerShell kullanarak SharePoint Online'da bir site koleksiyonu almak için şu adımları takip edebilirsiniz:

  1. Yerel makinenizde PowerShell'i açın.
  2. Connect-SPOService cmdlet'ini kullanarak SharePoint Online kiracınıza bağlanın. SharePoint Online yönetici URL'nizi ve kimlik bilgilerinizi sağlamanız gerekecektir.
  3. İstediğiniz site koleksiyonunu almak için Get-SPOSite cmdlet'ini çalıştırın. Örneğin, "https://crescent.sharepoint.com/sites/marketing" URL'sine sahip site koleksiyonunu almak için şu komutu çalıştırırsınız: Get-SPOSite -Identity https://crescent.sharepoint. com/sites/marketing Bu, URL'si, başlığı ve sahibi de dahil olmak üzere site koleksiyonuyla ilgili bilgileri döndürür.
  4. Site koleksiyonu hakkında ek bilgi almak istiyorsanız Get-SPOSiteGroup veya Get-SPOSiteGroupPermissions gibi diğer PowerShell cmdlet'lerini kullanabilirsiniz.

#Parameters
$AdminSiteURL="https://crescent-admin.sharepoint.com"
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"

#Connect to SharePoint Online from PowerShell
Connect-SPOService -url $AdminSiteURL

#Get the Site Collection
$Site =  Get-SPOSite -Identity $SiteURL

#sharepoint online list all site collections powershell
$Site | Select -Property Template, StorageUsageCurrent, StorageQuota, LastContentModifiedDate, sharingcapability

SharePoint Online için PowerShell cmdlet'lerini çalıştırmak için kiracıda SharePoint Yönetici rolünün olması ve yerel makinenizde SharePoint Online Yönetim Kabuğu'nun (veya SharePoint Online PowerShell modülünün) yüklü olması gerektiğini lütfen unutmayın.

PowerShell kullanarak SharePoint Online'daki Tüm Site Koleksiyonlarını Nasıl Alabilirim?

Site koleksiyonları SharePoint Online'daki birincil nesnelerdir. Kiracıdaki tüm site koleksiyonlarını listelemek için Get-SPOSite PowerShell cmdlet'ini kullanın. Şirket İçi SharePoint Yönetim Kabuğu'na benzer şekilde, Office 365 ve SharePoint Online sitelerine bağlanmak için “SharePoint Çevrimiçi Yönetim Kabuğu”nu da kullanabilirsiniz! SharePoint Online'daki tüm site koleksiyonlarını almak için PowerShell betiği:


Import-Module Microsoft.Online.Sharepoint.PowerShell -DisableNameChecking

$AdminSiteURL="https://crescent-admin.sharepoint.com"

$Credential = Get-credential 
Connect-SPOService -url $AdminSiteURL -Credential $Credential 

#sharepoint online list all site collections powershell
Get-SPOSite -Limit All | Format-Table Url, Template, StorageUsageCurrent, StorageQuota, LastContentModifiedDate, sharingcapability -AutoSize 

Varsayılan olarak Get-SPOSite cmdlet'i 200 site koleksiyonunu alır. Tüm siteleri kiracıdan almak için “Limit” anahtarını “Tümü” ile belirtmemiz gerekir. SharePoint Online'dan ayrıntılı bilgiler içeren tüm site koleksiyonlarını almak ve Tüm Site Koleksiyonu envanterini CSV'ye Dışa Aktarmak için PowerShell betiği buradadır:


Connect-SPOService -url "https://crescent-admin.sharepoint.com" -Credential (Get-credential)
Get-SPOSite -Detailed | Export-CSV -LiteralPath C:\Temp\SitesInventory.csv -NoTypeInformation

Bu PowerShell, SharePoint Online kiracısındaki tüm site koleksiyonlarını, mevcut tüm site koleksiyonu ayrıntılarıyla birlikte listeler.

PowerShell, Tüm Site Koleksiyonlarını SharePoint Online'da Alacak

Kayıtlı kimlik bilgileriyle SharePoint Online'a bağlanmaya ne dersiniz? Kaydedilmiş kimlik bilgilerini kullanarak tüm SharePoint Online sitelerini listelemek için PowerShell buradadır (komut dosyasında belirttiğiniz hesapta MFA'nın etkin olmadığını varsayıyorum!):


#Load SharePoint Online 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"
 
#Variables for Processing
$AdminUrl = "https://crescent-admin.sharepoint.com/"
$UserName= "Salaudeen@crescent.com"
$Password = "Password goes here"
 
#Setup Credentials to connect
$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
$Credentials = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $UserName, $SecurePassword

#connect to the service
Connect-SPOService -Url $AdminUrl -Credential $Credentials

#sharepoint online get all site collections PowerShell
$SiteColl = Get-SPOSite 

#sharepoint online PowerShell iterate through all site collections
ForEach($Site in $SiteColl)
{
    Write-host $Site.Url
}

Modern Ekip siteleri ve Grup Siteleri de dahil olmak üzere Tüm Site Koleksiyonlarını Almak için PowerShell:

Bu PowerShell, SharePoint Online'daki site koleksiyonlarını sıralar ve her sitenin URL'sini alır.

PowerShell kullanarak SharePoint Online'da Modern ekip siteleri ve gruba bağlı siteler dahil tüm sitelerin listesini alalım.


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\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"
  
#Get All Site collections from the Tenant- Including Modern Team sites and communication sites
Function Get-SPOSites($AdminSiteURL, $Cred)
{
    #Setup credentials to connect
    $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
   
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminSiteURL)
    $Ctx.Credentials = $Credentials
  
    #Get the tenant object 
    $Tenant = New-Object Microsoft.Online.SharePoint.TenantAdministration.Tenant($ctx)
  
    #Get All Site Collections
    $SiteCollections=$Tenant.GetSitePropertiesFromSharePoint(0,$true)
    $Ctx.Load($SiteCollections)
    $Ctx.ExecuteQuery()
 
    #Iterate through Each site collection
    ForEach($Site in $SiteCollections)
    {
        Write-host $Site.URL
    }
}
  
#Set Parameters
$AdminSiteUrl = "https://crescent-admin.sharepoint.com/"
$Cred= Get-Credential

#sharepoint online powershell list all sites
Get-SPOSites -AdminSiteURL $AdminSiteUrl -Cred $Cred

Tüm Site Koleksiyonlarını Listelemek için SharePoint Çevrimiçi PowerShell

Tüm site koleksiyonlarını belirli bir yol altında toplayalım:


Import-Module Microsoft.Online.SharePoint.Powershell

#Config Parameters
$AdminSiteURL="https://crescent-admin.sharepoint.com"

#Get Credentials to connect to the SharePoint Admin Center
$Cred = Get-Credential

#Connect to SharePoint Online Admin Center
Connect-SPOService -Url $AdminSiteURL -Credential $Cred

#Get All site collections which has /sites in its path
Get-SPOSite -Filter { Url -like '*/sites*' } -Limit All

#Get All site collections of Group site template
#Get-SPOSite -Filter { Template -eq "GROUP#0" } -Limit All

Tüm site koleksiyonlarını bazı kriterlere göre filtreleyebilir ve alabilirsiniz. Örneğin, > 1 GB depolama alanı kullanan tüm siteleri alalım.


Get-SPOSite -Limit All | where { $_.StorageUsageCurrent -gt 1024 }

Koleksiyonları filtrelemek ve almak için: Örneğin, URL'lerinde "Proje*" bulunan tüm site koleksiyonlarını alın.


Get-SPOSite -Filter {$_.url -like "https://tenant.sharepoint.com/sites/Project*"}

Tüm Siteleri Almak İçin SharePoint Çevrimiçi PnP PowerShell

SharePoint Online ortamınızdaki tüm site koleksiyonlarının bir listesini almanız mı gerekiyor? PnP PowerShell kurtarmaya! Bu betik, kiracınızdaki tüm site koleksiyonlarının bir listesini almak için PnP PowerShell cmdlet'i Get-PnPTenantSite'ı nasıl kullanacağınızı gösterir.


#Set Parameter
$TenantSiteURL="https://crescent.sharepoint.com"

#Connect to the Tenant site
Connect-PnPOnline $TenantSiteURL -Credentials (Get-Credential)

#sharepoint online pnp powershell get all sites
Get-PnPTenantSite

Aşağıdakileri kullanarak tüm site koleksiyonu ayrıntılarını çıkarabilir ve bunları CSV'ye aktarabiliriz:


#Config Variables
$TenantSiteURL =  "https://crescent-admin.sharepoint.com/"
$CSVFilePath = "C:\Temp\AllSitesData.csv"

#Connect to Tenant Admin Site
Connect-PnPOnline -Url $TenantSiteURL -Interactive

#Get All Site collections data and export to CSV
Get-PnPTenantSite -Detailed | Select Title, URL, Owner, LastContentModifiedDate, WebsCount, Template, StorageUsage | Export-Csv -path $CSVFilePath -NoTypeInformation

Bu, modern ekip siteleri ve iletişim siteleri de dahil olmak üzere tüm site koleksiyonlarını alır. Arama merkezini, Sitem Ana Bilgisayarı'nı, Uygulama Kataloğu'nu, İçerik Türü Merkezi'ni, eKeşif ve Bot'u vb. atlayalım ve kiracıdaki tüm sitelerin kotasını alalım:


#Parameter
$TenantAdminURL = "https://Crescent-admin.sharepoint.com"

#Connect to Admin Center
Connect-PnPOnline -Url $TenantAdminURL -Interactive
   
#Get All Site collections - Exclude: Seach Center, Redirect site, Mysite Host, App Catalog, Content Type Hub, eDiscovery and Bot Sites
$SiteCollections = Get-PnPTenantSite | Where -Property 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)
{
    #Get the storage Quota of the site
    Write-host $Site.URL - $Site.StorageQuota
}

OneDrive sitelerini şu şekilde ekleyebilirsiniz:


#Get all site collections including OneDrive Sites
Get-PnPTenantSite -IncludeOneDriveSites

Site Koleksiyonları Listesini HTML Raporu biçiminde alın

PowerShell kullanarak tüm site koleksiyonlarının kolay bir HTML biçiminde bir listesini alalım:


Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking

#Config Parameters
$AdminSiteURL="https://crescent-admin.sharepoint.com"
$ReportOutput="C:\Temp\SitesRpt.html"

#CSS Styles
$HeadTag = @"
<style type="text/css">

table {
 border-collapse: collapse; font-family: verdana,arial,sans-serif;
 font-size:11px; color:#333333; border-width: 1px; border-color: #a9c6c9;
 border: b1a0c7 0.5pt solid; border-spacing: 1px; border-collapse: separate; /*Sal Table format */  
}

th {
border-width: 1px; padding: 5px; background-color:#8064a2;
border: #b1a0c7 0.5pt solid; font-family: Calibri; height: 15pt; 
color: white;  font-size: 11pt;  font-weight: 700;  text-decoration: none;
}

td {
 border: #b1a0c7 0.5pt solid; font-family: Calibri; height: 15pt; color: black; 
 font-size: 11pt; font-weight: 400; text-decoration: none; 
}

tr:nth-child(even) { background-color: #e4dfec; }
tr:hover { background-color: #694D8C; color:#ffffff }

</style>
"@

$PreContentTag = "<h3> SharePoint Online: Site Collections Inventory Report </h3>"

#Get Credentials to connect to the SharePoint Admin Center
$Cred = Get-Credential

#Connect to SharePoint Online Admin Center
Connect-SPOService -Url $AdminSiteURL -Credential $Cred

#Get All site collections
$SiteCollections = Get-SPOSite -Limit All
Write-Host "Total Number of Site collections Found:"$SiteCollections.count -f Yellow

#Get the site collection details, convert to html and output to the report
$SiteCollections | ConvertTo-HTML -Title "Site Collection Inventory Report" -Property URL, Title,@{Expression={$_.LastContentModifiedDate }; Label="Last Modified"} -Head $HeadTag -PreContent $PreContentTag | Out-File $ReportOutput

Ve rapor şöyle görünüyor:

Kapanıyor

Sonuç olarak PowerShell, SharePoint Online'daki tüm site koleksiyonlarının listesini almak için güçlü ve etkili bir yol sağlar. SharePoint yöneticileri, uygun PowerShell cmdlet'lerini kullanarak, ortamlarındaki tüm site koleksiyonlarının kapsamlı bir listesini hızlı ve kolay bir şekilde alabilir. Bu bilgiler, denetim, sorun giderme, kullanımı izleme ve SharePoint ortamını optimize etme gibi çeşitli yönetim ve denetim görevleri için kullanılabilir.

PowerShell'i SharePoint Online ile kullanmaya ilişkin başka bir makale: PowerShell, SharePoint Online ile Nasıl Kullanılır?

Sıkça Sorulan Sorular:

PowerShell'i kullanarak nasıl SharePoint Online site koleksiyonu oluşturabilirim?

SharePoint Online Yönetim Kabuğu - New-SPOSite, PnP PowerShell cmdlet'i New-PnPTenantSite veya CSOM PowerShell komut dosyalarını kullanarak SharePoint Online'da yeni siteler oluşturabilirsiniz.
Daha fazla bilgi: SharePoint Online'da yeni bir site koleksiyonu oluşturmak için PowerShell

PowerShell'i kullanarak SharePoint Online'daki tüm alt siteleri nasıl edinebilirim?

Bir SharePoint Online sitesinden tüm alt siteleri almak için şunu kullanın: PnP PowerShell'de Get-PnPSubWeb cmdlet'i. Bir site koleksiyonunun alma ağlarını (alt sitelerini) yüklemek için CSOM PowerShell komut dosyalarını da kullanabilirsiniz.
Daha fazla bilgi: SharePoint Online'daki Site Koleksiyonundaki Tüm Alt Siteleri Almak için PowerShell

PowerShell'deki tüm SharePoint sitelerini ve alt sitelerini nasıl edinebilirim?

Tüm site koleksiyonlarını ve alt sitelerini almak için, web koleksiyonunu yinelemeli olarak CSOM'da almanız gerekir. PnP PowerShell ile: Get-PnPSubWeb -Recurse
Daha fazla bilgi: SharePoint Online'daki tüm site koleksiyonlarını ve alt sitelerini almak için PowerShell

İlgili makaleler