SharePoint mette a disposizione direttamente dall’elenco della applicazioni SharePoint 2010 Management Shell. Un prompt dei comandi PowerShell nel quale è pre caricato lo snapin Microsoft.SharePoint.PowerShell.dll. Con un click si può iniziare a scrivere snippet powershell per SharePoint.
Sfruttando PowerShell ISE, un tool incluso nel sistema operativo, si invece ha un vero ambiente di debugging degli script powershell.
Naturalmente PowerShell ISE non carica automaticamente l’assembly con le estensioni SharePoint per PowerShell. E’ quindi necessario inserire come prima riga dello script il comando
Add-PSSnapin Microsoft.SharePoint.Powershell
e farlo eseguire una volta sola perchè le successive avranno lo snippet precaricato (spesso infatti viene commentato).
Ovviamento l’approccio è migliorabile. E’ sufficiente scrivere qualche riga in più e con uno script più sofisticato controlliamo se lo snapin è già stato caricato. Se non lo è si fa il caricamento, diversamente prosegue.
if ((Get-PSSnapin | Where {$_.Name -eq "Microsoft.SharePoint.PowerShell"}) -eq $null) { Add-PSSnapin Microsoft.SharePoint.PowerShell; }Ammetto però che dover scrivere, meglio copiare, queste righe tende ad essere una perdita di tempo e ci espone ogni volta ad probabili errori di battitura. Per semplificare maggiormente l'approccio ci viene in aiuto la funzionalità PowerShell Profiles. Un sistema che quando configurato esegue in fase di caricamento un proprio script ed è in questo script che noi andremo ad innestare il caricamento dello snapin. Come si fa?
E' necessario creare uno profile script, io uso questa tipogia %UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1, aprire il ps1 e inserire queste righe di codice che vanno a configurare il riutilizzo dello thread ad ogni esecuzione di script e caricano l'assembly con le estensioni PowerShell per SharePoint.
$ver = $host | select version
if ($ver.Version.Major -gt 1) {$host.Runspace.ThreadOptions = "ReuseThread"}
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
D’ora in poi ad ogni apertura di PowerShell ISE verrà caricato lo snapin di SharePoint e anche voi direte come me: “questa si che è vità!!!”