Report dimensioni site collection con Powershell

E’ passato un po’ di tempo dall’ultimo post e mi accingo ad “inaugurare” il nuovo anno esattamente da dove l’avevo lasciato, cioè da Windows PowerShell.

Ne approfitto già che ci sono per ricordarvi che alla prossima SharePoint & Office Conference io e Claudio terremo una sessione su PowerShell 3 e SharePoint 2013, se siete da quelle parti fatevi riconoscere :).

Ma torniamo a noi. Di recente un cliente mi ha chiesto un report giornaliero sulle dimensioni di una serie di site collection (SharePoint 2010). Un possibilità era quella di suggerire al cliente di aprire la site collection con SharePoint Designer tutte le volte che ne aveva voglia e controllare da se. Ottima idea per interrompere subito i rapporti con la maggior parte dei clienti :). Affidarsi alle dimensioni del content database non fornisce sufficienti informazioni sul reale livello di utilizzo del sito in quanto lo stesso database può contenere più site collection. Inoltre penso sia applicabile la stessa considerazione fatta in precedenza.

La strada che ho intrapreso è stata, inutile ribadirlo, quella di utilizzare uno script PowerShell. Concettualmente è molto semplice. Faccio un ciclo su tutte le site collection, memorizzo sia lo spazio utilizzato dalla site collection che dal content database ed invio i risultati via email ad uno o più destinatari . Lo script è pensato per essere eseguito tramite Task Scheduler.

Ecco lo script:

if ((Get-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue) -eq $null){
Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue
}

<## Nelle righe seguenti vado a ricavare l’indirizzo del server SMTP configurato nella Central Administration e imposto qualche variabile di servizio ##>

$nl = [environment]::NewLine
$message = “”
$storage = 0
$ca = Get-SPWebApplication -IncludeCentralAdministration | ?{$_.IsAdministrationWebApplication -eq “True”}
$smtpServer = $ca.OutboundMailServiceInstance.Server.Address

<## A questo punto ciclo su web application e site collection, ordinando i risultati per spazio occupato. Nel ciclo formatto i valori in modo che siano numeri leggibili e creo il messaggio da inviare ##>

Get-SPWebApplication | Get-SPSIte -Limit All | Sort-Object -Descending -Property $_.usage.storage | %{
$db = Get-SPContentDatabase $_.ContentDatabase ;
$dbsize = “{0:N2}” -f ($db.DiskSizeRequired/1GB) ;
$size = “{0:N2}” -f ($_.usage.storage/1GB);
$message += $nl + $nl + $_.Url + “; ” + $size + ” GB; ” + ($_.ContentDatabase -replace “SPContentDatabase Name=”,””) + “; ” + $dbsize + ” GB;”
$storage += $_.usage.storage
}

<## Aggiungo al messaggio la somma dello spazio occupato da tutte le site collection. Alle righe successive imposto il messaggio di posta e lo invio. ##>

$message += $nl + $nl + “Totale storage {0:N2}” -f ($storage/1GB) + ”  GB”

$date = Get-Date
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.From = “me@mioserver.it
$msg.ReplyTo = “me@mioserver.it
$msg.To.Add(“te@tuoserver.com“)
$msg.subject = “Report storage site collections ” + $date.ToShortDateString()
$msg.body = $message
$smtp.Send($msg)

Puoi scaricare lo script dal mio SkyDrive, a tuo rischio e pericolo, si intende 🙂

Se invece questo tipo di informazioni servono una tantum e nel più breve tempo possibile devo convenire con Igor che il comando stsadm -o enumsites -url http://miosito è probabilmente la soluzione più veloce. Anche se io continuo a preferire the Powershell way 🙂

Happy PoSH
– Riccardo

SharePoint & Office Conference 2013


Completare la migrazione di un content database con PowerShell

Nelle settimane passate mi sono trovato ad affrontare un problema nato dopo la migrazione di una intranet da SharePoint 2007 a SharePoint 2010. La procedura che ho seguito per la migrazione è stata quella del database attach. L’operazione è andata (apparentemente) a buon fine, la intranet rispondeva a dovere, tranne per un “dettaglio”: se provavo a creare un nuovo sito o un nuovo elenco ottenevo l’errore seguente.

error_pagetitle
error_pagetitle

Ho provato, come primo tentativo, ad impostare via PowerShell l’interfaccia utente di SharePoint 2007. Così facendo la creazione di nuovi elementi non dava alcun problema. Reimpostando l’interfaccia SharePoint 2010, l’errore si è ripresentato. A questo punto sono andato a controllare nelle Central Administration (Central Administration > Upgrade and Migration > Review Database Status) lo stato del mio Content Database appena migrato.

Ho scoperto che la procedura di migrazione non era completa. In corrispondenza del db ho infatti trovato l’indicazione “Database is up to date, but some sites are not completely upgraded“.
Via PowerShell ho quindi completato l’operazione di upgrade, servono solo poche righe, le trovate di seguito.

$cdb = Get-SPContentDatabase Il_Mio_Content_Database

 

Upgrade-SPContentDatabase -id $cdb.Id

Una volta eseguito questo comando tutto ha ricominciato a funzionare come da manuale.

 

– Riccardo

 


Il Community Tour sbarca a Bologna

Nuova tappa per il Community Tour. Martedì 16 Novembre SharePointCommunity.it e UGISS saranno a Bologna, per presentare nell’arco dell’intera giornata diverse sessioni tecniche relative ai molti punti di intersezione tra SharePoint e SQL Server.

Io avrò l’onore, insieme ad Igor, di rappresentare, per la terza volta dopo Cesena e Milano, la SharePointCommunity italiana. La mia sessione riguarderà, tra i vari argomenti, le novità in fatto di ottimizzazione dello storage in SharePoint 2010. Quale occasione migliore per parlare di questi argomenti vista la presenza dei ragazzi di UGISS?

Io non vedo l’ora di partecipare a questo evento in compagnia di professionisti come Igor, Franco Perduca e Gialunca Hotz, spero che valga anche per voi e di vedervi numerosi a Bologna!  🙂

Questo evento, come i precedenti legati al Community Tour, è gratuito, ma i posti sono limitati… qui trovate tutte le informazioni per la registrazione: https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032464248&culture=it-IT.

– Riccardo


SharePoint 2010 DBs

Il fatto che il numero dei database che “supportano” un installazione di SharePoint 2010 sia alto non è un segreto già da qualche mese. Forse è un po’ meno noto le caratteristiche di ciascun database. Pochi giorni fa, mentre cercavo tutt’altro, mi sono imbattuto in un interessante diagramma Visio che aiuta a capirci qualche cosa di più. Per ogni db viene indicato cosa contiene, le sue dimensioni “relative”, le indicazioni sulla scalabilità e altre informazioni utili.

Il documento in questione è scaricabile liberamente dal  sito Microsoft download. Nel documento sono inoltre riportati due link di approfondimento alle pagine TechNet sul medesimo argomento (in inglese):

Database types and descriptions (SharePoint Server 2010)

Database types and descriptions (SharePoint Foundation 2010)

Buona lettura 😉

– Riccardo