PowerShell: Calcolare lo spazio occupato dalle site collection SharePoint
Lo script in PowerShell elenca tutte le site collection presenti nella Farm di SharePoint 2007 (WSS3 - MOSS) e lo spazio da loro occupato in MB.
Da questo esempio si vede come accedere alla Farm (SPFarm) ed ottenere l'elenco delle Web Application (SPWebApplicationCollection) e da queste ricavarsi tutte le site collection (SPSite).
Lo spazio occupato (Usage.Storage), essendo una proprietà di una proprietà passata tramite pipe, non può essere visualizzato semplicemente con Usage.Storage, ma va preso tramite la sintassi
La sintassi compatta di questa espressione è
dove non è possibile specificare un titolo per la colonna (che in questo caso sarà $_.Usage.Storage).
il risultato di questo script sarà:
PowerShell: SPSiteCollectionSize.ps1
Write-Host "Elenca lo spazio occupato dalle site collection"
Write-Host (GEt-Date -Format D)
Write-Host ""
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$farm = [Microsoft.SharePoint.Administration.SPFarm]::local
$services = $farm.Services
$wss = $services | Where-Object {$_.TypeName -eq "Windows SharePoint Services Web Application"}
$webApps = $wss.WebApplications
#$webApps | ForEach-Object {$_.Sites} | ForEach-Object {write-output ($_.Url + ", " + [Math]::Round($_.Usage.Storage / 1024 / 1024, 2) + " MB")}
#$webApps | ForEach-Object {$_.Sites} | Sort-Object Url | Format-Table Url, @{Label="Title"; Expression={$_.RootWeb.Title}}, @{Label="Size MB"; Expression={[Math]::Round($_.Usage.Storage / 1024 / 1024, 2) }}, @{Label="Visits"; Expression={$_.Usage.Visits}} -auto
$webApps | ForEach-Object {$_.Sites} | Sort-Object Url | Get-Unique | Format-Table Url, @{Label="Size MB"; Expression={[Math]::Round($_.Usage.Storage / 1024 / 1024, 2) }}, @{Label="Visits"; Expression={$_.Usage.Visits}} -auto
Lo spazio occupato (Usage.Storage), essendo una proprietà di una proprietà passata tramite pipe, non può essere visualizzato semplicemente con Usage.Storage, ma va preso tramite la sintassi
PowerShell
@{Label="titolo"; Expression={$_.Usage.Storage}}
La sintassi compatta di questa espressione è
PowerShell
{$_.Usage.Visits}
il risultato di questo script sarà:
Text
Elenca lo spazio occupato dalle site collection
giovedì 24 luglio 2008
Url Size MB Visits
--- ------- ------
http://localhost 1 22556
http://localhost/MySite 0
http://localhost/personal/administrator 0
http://localhost/sites/alberto 0
http://localhost:13472 214,72 70842
http://localhost:20100/ssp/admin 2,11 127