Per Windows fino a qualche anno fa era molto difficile competere con i sistemi Linux/Unix a livello di funzionalità di scripting e di amministrazione tramite riga di comando. L’arrivo di PowerShell, nota in precedenza con il nome in codice Nomad, ha fortunatamente cambiato la situazione. Questa shell a riga di comando non è integrata in Windows (almeno in tutte le versioni desktop e server del sistema operativo Microsoft, con una sola eccezione: Windows Server 2008), ma può essere scaricata e installata a parte ed è stata pensata espressamente per gli amministratori di sistema. Oltre a fornire un prompt interattivo, PowerShell mette a disposizione un ambiente di scripting e offre una completa integrazione con le applicazioni .Net. I comandi della shell infatti non restituiscono semplicemente un output basato su testo, ma veri e propri oggetti .Net. Il risultato di un comando può dunque essere dato facilmente in pasto a un secondo comando, senza che sia necessario elaborare in qualsiasi modo l’output per adattarlo.
La Windows PowerShell introduce anche il concetto di cmdlet (pronunciato come la parola inglese “command-let”): si tratta di un comando a funzionalità singola che consente di modificare gli oggetti della shell. I cmdlet sono comandi molto semplici, progettati per funzionare in combinazione con altri comandi. Quelli che iniziano con la parola “get” ad esempio servono per recuperare dati, mentre quelli con “set” servono per impostare o modificare un valore. I comandi con “format” invece hanno come scopo principale la formattazione dei dati, mentre i comandi che iniziano con “out” servono solo a indirizzare l’output verso una risorsa.
Con il comando get-command si può ottenere una lista dei comandi disponibili nella shell, mentre con get-help si possono visualizzare le informazioni disponibili nella Guida di PowerShell. Get-help può essere utilizzato anche per vedere le informazioni di un singolo comando: con “get-help get-command -detailed” ad esempio si possono avere tutte le informazioni sul comando get-command, compresi una serie di esempi inclusi nella guida. PowerShell offre anche molte funzionalità avanzate, come la creazione di un alias per richiamare un comando in modo più veloce. Si possono avere maggiori informazioni in merito consultando la guida per i comandi get-alias e set-alias. La PowerShell poi a differenza del Prompt dei comandi permette non solo la navigazione all’interno del file system, ma anche nel Registro di sistema, nell’archivio di certificati per la firma digitale e nell’elenco di funzioni della sessione corrente. Per accedervi basta usare il comando cd seguito da “HKLM:” o “HKCU:” per accedere rispettivamente alle sezioni HKEY_LOCAL_MACHINE e HKEY_CURRENT_USER del Registro di Windows, oppure da “Cert:” per navigare nell’archivio dei certificati e “Function:” per le funzioni. In tutte le cartelle – del file system, del registro o degli altri contenitori – per visualizzare il contenuto si può usare la funzione get-childitem o semplicemente uno dei suoi due alias: il consueto dir e il comando ls, tipico dei sistemi Linux/Unix.
Gli script per Windows PowerShell hanno estensione ps1 e – per ovvi motivi di sicurezza – non possono essere eseguiti tramite un semplice doppio clic, ma devono essere lanciati dalla shell usando il comando preciso del file. Per garantire un livello di protezione adeguato poi viene valutato di volta in volta il criterio di esecuzione (ExecutionPolicy) impostato per il sistema, che consente di determinare se gli script possono essere eseguiti e se devono includere una firma digitale. Per saperne di più sui criteri di esecuzione si può consultare la guida di PowerShell con il comando “get-help about_signing” seguito magari da “| more” per avere una visualizzazione pagina per pagina. Per cambiare il criterio di esecuzione è comunque necessario che la shell sia eseguita con i privilegi di amministrazione.
La Windows PowerShell può essere scaricata qui.
Se cercate una guida all’uso della PowerShell, vi consigliamo di cercare on-line, partendo proprio dall’homepage della shell. Troverete sia diverse guide, sia molti script già pronti che possono essere utili per svolgere attività avanzate.
In particolare vi segnaliamo le PowerShell Community Extensions, una raccolta di cmdlet, script, alias e altri componenti aggiuntivi con cui si può facilmente potenziare la shell.