PowerShell è una shell caratterizzata da un’interfaccia a riga di comando e da un versatile linguaggio di scripting che permette di eseguire ogni genere di operazione, anche quelle apparentemente più complesse.
Windows PowerShell, con il rilascio di Windows 10 Creators Update sostituirà addirittura il tradizionale prompt dei comandi.
Nata come strumento al servizio degli amministratori di sistema, grazie anche alla sua potenza e versatilità, PowerShell si lega sempre più anche con le versioni consumer di Windows dopo essere stata ampiamente usata sui server e sul cloud (si pensi alla piattaforma Microsoft Azure).
Il bello di Windows PowerShell è che supporta tutti i comandi del tradizionale prompt (cmd
), riconosce molti comandi Linux/Unix e, diversamente dall’approccio Unix-like, supporte le cosiddette cmdlets.
Le cmdlet sono “serie di comandi”: il loro output viene convertito in testo se quando vi si accede da riga di comando mentre viene convertito in un oggetto se utilizzato come input per un’altra cmdlet.
Grazie a PowerShell e alle cmdlet, decine di clic in un’interfaccia grafica possono essere sostituiti con un unico semplice comando.
Oltre a supportare comandi standard, infatti, PowerShell supporta l’utilizzo di un linguaggio di scripting simile al C#, con molte funzionalità dedicate agli esperti.
Il “modello provider” usato da PowerShell permette non soltanto l’accesso al file system ma anche ad altre strutture dati gerarchiche come il registro di sistema di Windows.
Nell’articolo Lista programmi installati in Windows, ecco come ottenerla abbiamo visto un esempio di script che accede a un sottoramo dell’albero HKEY_LOCAL_MACHINE (HKLM) del registro di Windows.
L’output di un comando PowerShell può essere poi assegnato a una variabile utilizzandolo come oggetto o array di oggetti.
Come avviare e utilizzare PowerShell
Per eseguire PowerShell è sufficiente premere la combinazione di tasti Windows+R
quindi scrivere powershell
e premere Invio.
Alcune operazioni, però, se eseguite da PowerShell richiedono i diritti di amministratore per poter essere eseguite. Suggeriamo quindi di digitare powershell
nella casella di ricerca di Windows quindi premere CTRL+MAIUSC+INVIO
.
Con il rilascio del Creators Update per Windows 10, per eseguire rapidamente PowerShell con i diritti di amministratore, basterà premere la combinazione di tasti Windows+XA
.
Quando si lavora con PowerShell è bene tenere presenti alcuni utilissimi tasti:
Effettua l’autocompletamento dei comandi, riducendo al minimo la possibilità di commettere errori nella digitazione.
Cancella istantaneamente tutti i caratteri alla destra del cursore.
Comune a tutti i wordprocessor questa combinazione di tasti consente di passare rapidamente da una parola all’altra.
Permette di recuperare le istruzioni digitate in precedenza, senza doverle riscrivere di nuovo.
Rimuove completamente la riga corrente.
Digitando quanto segue al prompt di PowerShell, si otterrà una lista completa di tutti i comandi supportati:
PowerShell chiederà l’autorizzazione per scaricare i file della guida aggiornati: si potrà rispondere affermativamente premendo il tasto Invio.
Digitando il comando dir
si noterà come sia supportato in PowerShell così come qualunque altro comando usato al prompt tradizionale.
Il comando ls
, normalmente usato sui sistemi Unix/Linux, produrrà il medesimo output.
Digitando però Get-Alias dir
e Get-Alias ls
, si scoprirà che entrambi, i PowerShell, sono alias di un altro comando ossia Get-ChildItem
.
Di primo acchito può sembrare qualcosa di folle: in realtà PowerShell usa sempre il comando Get-ChildItem
anche quando si adopera dir
o ls
che consente di restituire sottoinsiemi di dati a partire da qualunque insieme di più grandi dimensioni.
e Get-ChildItem
sono cmdlet che in PowerShell hanno la struttura verbo-complemento.
Utilizzando il comando Get-Help
seguito dalla cmdlet sulla quale si stanno cercando informazioni, si otterranno preziose indicazioni per realizzare i propri script.
I seguenti articoli offrono due semplici spunti per capire che cosa si può fare con PowerShell:
– Come rinominare una serie di file con Powershell
– Scaricare file automaticamente con Powershell
Le possibilità di PowerShell sono però davvero infinite: utilizzando la pipeline e, in particolare il carattere pipe (|), è possibile destinare l’output di un comando come input di un altro (lo abbiamo visto in tutti gli esempi citati in precedenza…).
Così usando ad esempio il comando che segue, si potrà ottenere la lista di tutti i servizi di sistema al momento fermati:
Aggiungendo un’altra cmdlet si potranno filtrare ulteriormente le informazioni da visualizzare:
In questo caso, ad esempio, si visualizzeranno in output solo i contenuti delle colonne Name e Status.
E con un comando del genere, si potranno addirittura ottenere tutti i dati richiesti come file HTML, che sarà poi aperto con il browser.
Non è a dir poco eccezionale?
Consigliamo di provare e utilizzare le seguenti cmdlet che adoperate sulla pipeline consentono di indirizzare l’output verso diverse destinazioni e di strutturarlo secondo le proprie necessità:
Format-Wide
(l’output viene creato in forma tabellare)
Format-List
Format-Tablet
Out-File
Out-Printer
Out-GridView
(recupera le specifiche proprietà di un oggetto)
(filtra le proprietà di un oggetto)
(raggruppa gli oggetti con proprietà simili)
(paragona due insiemi di oggetti)
ConvertTo-HTML
ConvertTo-CSV