Crea sito
24 Ottobre 2020

Officine Informatiche Roma

ICT SERVICES ROMA – BAZAAR INFORMATICO

POWER SHELL – CARATTERISTICHE

4 min read
20 / 100

PowerShell, noto inizialmente come Microsoft Shell, MSH o col nome in codice Monad e poi come Windows PowerShell è una shell caratterizzata dall’interfaccia a riga di comando (CLI) e da un linguaggio di scripting, sviluppata da Microsoft, basato sulla programmazione a oggetti e sul framework Microsoft .NET.

Microsoft intendeva in origine distribuire PowerShell insieme con Windows Vista, ma in seguito ha definito delle date di distribuzione diverse per PowerShell. Necessita della versione 2.0 del .NET Framework ed è supportato su Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows 8 e Windows 10 disponibile nelle edizioni x86, x64 ed Itanium. Era presente in versione 2 su Windows 7 dal quale non è disinstallabile. L’installazione di Powershell su Windows 2000 è possibile (previa installazione del framework), ma il sistema che ne risulta è completamente non standard e non supportato.

Costituisce inoltre la base dell’interfaccia amministrativa per Microsoft Exchange Server 2007 dove qualsiasi operazione è svolta tramite riga di comando e l’interfaccia GUI è posizionata su uno strato superiore a detti comandi.

Dalla versione 6.0 dell’agosto 2016 PowerShell è diventato software libero e Microsoft lo ha reso disponibile anche per Linux e Mac OS.

Il nome in codice di PowerShell, Monad, proviene dalla monadologia di Gottfried Leibniz, una filosofia in cui l’universo è composto da elementi fondamentali, le monadi, disposti in una “armonia prestabilita”. In maniera simile, PowerShell è la combinazione di compiti complessi e di una serie di componenti, le cmdlets (command lets, serie di comandi), che sono classi .NET progettate per sfruttare le caratteristiche dell’ambiente. La differenza fondamentale tra l’approccio Unix e quello di PowerShell risiede nel fatto che piuttosto che creare una “pipeline” (lett. tubo) basata su input ed output testuali, PowerShell fa passare i dati da una cmdlet all’altra come oggetti (dati dotati di una struttura ben precisa).

L’output di una cmdlet, se si tenta di accedervi tramite riga di comando, viene automaticamente convertito in testo; se, invece, si tenta di utilizzarlo in un’altra cmdlet, esso verrà convertito nell’oggetto più appropriato per l’input di quell’altra cmdlet. In questo modo, varie utility comunemente utilizzate nelle pipelines Unix, quali grep ed awk, non sono più necessarie, e si permette una combinazione interattiva o in un ambiente di scripting dei singoli elementi, cosa che avrebbe, diversamente, richiesto un linguaggio di programmazione più complesso. Per esempio, una lista dei processi in esecuzione non sarà costituita dal testo che li descrive, ma dagli oggetti che la compongono, sicché è possibile invocare metodi su questi oggetti senza far esplicito riferimento ad alcuna struttura o libreria.

Caratteristiche

Linguaggio di scripting simile al C#, con molte funzionalità dedicate agli utenti esperti, come il supporto diretto alle hash table, i costrutti switch basati su espressioni regolari, la scomposizione degli array, la possibilità di memorizzare come dati metodi anonimi da eseguire in un secondo momento. Sono presenti, naturalmente, tutte le caratteristiche che ci si aspetta di trovare in un linguaggio di scripting, quali l’iterazione (for/foreach/while), i costrutti condizionali (if/switch), i campi di visibilità delle variabili (global/script/local/private) e la possibilità di definire funzioni.

Tutte le cmdlet ereditano alcune caratteristiche, cosa che permette all’utente di scegliere, ad esempio, il livello di interazione e la modalità di gestione degli errori; si consideri, come esempio, la “sospensione”, che permette di entrare in una nuova shell di comando, indagare su un problema, e quindi continuare con il comando originale. Al programmatore viene fornito un semplice meccanismo integrato per definire le richieste da mostrare in situazioni del genere. Le cmdlet che restituiscono qualcosa all’esterno supportano le opzioni -WHATIF e -CONFIRM. -WHATIF simula l’esecuzione della procedura, comunicandone il possibile esito all’utente. -CONFIRM informa l’utente su ciò che sta per accadere e gli permette di decidere cosa fare.
Un modello provider estendibile fornisce la possibilità di accedere e manipolare non solo il file system, ma anche altre strutture dati gerarchiche. Ad esempio, PowerShell integra un provider per il Registro di Windows che consente l’accesso agli alberi “HKLM” (HKEY_LOCAL_MACHINE) e “HKCU” (HKEY_CURRENT_USER). In questo modo, il registro può essere visualizzato con comandi quali “dir HKLM:\SOFTWARE\Microsoft” dal prompt della shell. PowerShell fornisce provider per la libreria di certificati di sicurezza, le variabili d’ambiente e di shell, le funzioni e gli alias; gli utenti possono creare loro propri provider e integrarli in PowerShell.

Le opzioni della riga di comando sono, in genere, parole intere, ma è possibile farvi riferimento più velocemente, specificando solo il numero minimo di lettere necessario a distinguerle dalle altre (ad esempio, l’opzione -mostra-informazioni-dettagliate può essere richiamata specificando solo -m se nessun’altra opzione comincia per ‘m’).

Completamento automatico dei comandi estendibile dall’utente. Si pensi che cmd.exe nelle versioni recenti di Windows può solo completare i nomi di file e directory, a differenza di ciò che accade in shell quali bash e zsh.

Possibilità di assegnare l’output di un comando ad una variabile, che diventa un oggetto o un array di oggetti visualizzabile in qualunque maniera si desideri.

Translate »