Introduzione a PowerShell: il toolkit per amministratori di sistema
L’importanza degli amministratori di sistema nelle imprese non va sottovalutata: infatti solo con un’infrastruttura IT affidabile e costantemente funzionante un’azienda può raggiungere il massimo dell’efficienza economica. A seconda delle dimensioni dell’organizzazione, ciò richiede il monitoraggio e il controllo di decine, se non centinaia, di computer contemporaneamente. Un compito enorme che solo specialisti formati con una profonda conoscenza delle connessioni interne al sistema possono padroneggiare.
Se ora si verifica un problema con più computer contemporaneamente o se una nuova soluzione di sicurezza deve essere caricata sull’intera rete il più rapidamente possibile, non sarebbe né efficiente in termini di tempo né economico per un amministratore controllare ogni dispositivo singolarmente e ripetere sempre le stesse azioni. Windows PowerShell consente di velocizzare immensamente tali processi e di automatizzare il più possibile le attività di routine. Questo semplifica notevolmente il lavoro dell’amministratore di sistema. Scoprite nel nostro articolo che cosa può fare il software.
Indice
-
Che cos’è Windows PowerShell?
-
Perché esiste Windows PowerShell?
-
Cosa contraddistingue PowerShell rispetto al prompt dei comandi?
-
Come funziona Windows PowerShell?
-
Quali sono i contesti di utilizzo tipici di PowerShell?
Di primo acchito Windows PowerShell assomiglia molto al prompt dei comandi, anche se presenta differenze sostanziali.
Che cos’è Windows PowerShell?
Windows PowerShell è, come suggerisce il nome, una cosiddetta “shell”. Nella tecnologia dell’informazione si intende un’interfaccia tra un computer e il suo utente. Il termine inglese “shell” significa “conchiglia”, ma è usato in senso figurato per descrivere un involucro esterno. Questo è anche il caso dell’informatica, dove il termine si riferisce all’interfaccia utente visibile attraverso la quale è possibile interagire con le funzioni interne al sistema di un computer.
Le shell sono generalmente orientate ai comandi e sono quindi controllate esclusivamente da tastiera e tramite l’immissione di testo. Sono quindi un’alternativa alle interfacce grafiche utente (GUI), che sono principalmente navigabili con il mouse, ad esempio tramite Windows Explorer. Dal momento che le shell forniscono anche un maggiore e più approfondito accesso alle funzioni e componenti di un PC, sono preferiti da molti professionisti IT e amministratori di sistema.
Perché esiste Windows PowerShell?
Fino a poco tempo fa, la riga di comando command.com e il prompt dei comandi cmd.exe erano le shell predefinite rispettivamente per i sistemi operativi DOS e Windows, che consentono agli utenti di computer avanzati di aprire le applicazioni della console, risolvere i problemi o navigare tra le unità di un PC. Ad esempio, il comando netstat può essere utilizzato per ottenere informazioni di base su tutte le attività di rete. Tuttavia, command.com e cmd.exe hanno sempre riscontrato due problemi: non tutti i componenti del sistema sono accessibili attraverso di essi e i loro linguaggi di scripting sono considerati di funzionalità limitata. Così, da qualche tempo ormai, sono state considerate non così sofisticate come le comuni shell Linux e Unix.
Gli sviluppatori di Microsoft avevano quindi pianificato di eliminare queste restrizioni a partire dagli anni 90. Nel corso del tempo hanno sviluppato varie shell con le quali hanno messo in pratica, più o meno bene, questo proposito. Monad, introdotto per la prima volta nel 2003 e ribattezzato PowerShell tre anni dopo, si è rivelato particolarmente innovativo.
I “Common Engineering Criteria” di Microsoft, secondo i quali tutti i prodotti server dell’azienda devono supportare PowerShell dal 2009, hanno trasformato PowerShell nella soluzione centrale di gestione e automazione in Windows. A partire da Windows 2008 è stato fornito opzionalmente con il sistema operativo, mentre nelle versioni successive è stato integrato come standard. Come framework open source è disponibile anche per il download per le versioni precedenti di Windows.
Windows PowerShell è preinstallato in tutte le versioni di Windows a partire dal 2008.
Nel 2016 si è deciso di offrire la shell indipendentemente dal sistema operativo. L’intenzione di Microsoft dietro tutto questo risiede nel fatto che in futuro PowerShell diventerà anche uno strumento universale per gli amministratori di sistema al di fuori di Windows, cioè su Linux e macOS. Da allora, PowerShell è diventato sempre più diffuso e conquista sempre nuovi sostenitori. Concludendo si può quindi affermare che PowerShell è il successore da tempo atteso del prompt dei comandi.
Cosa contraddistingue PowerShell rispetto al prompt dei comandi?
Ma in cosa differisce esattamente il familiare prompt dei comandi dal nuovo framework di Microsoft? In parole povere, PowerShell ha tutte le caratteristiche di cmd.exe, svolge meglio molte funzioni e compie altri processi che finora non erano possibili su Windows.
In linea di principio, PowerShell fornisce la stessa gamma di comandi di cmd.exe: fondamentalmente può essere utilizzato allo stesso modo del prompt dei comandi, disponendo di una sufficiente conoscenza dei comandi standard. Tuttavia, permette anche l’accesso più approfondito a processi interni di Windows, come il registro di sistema e la Windows Management Instrumentation (WMI), che prima non erano accessibili utilizzando cmd.exe. Inoltre, la riga di comando di Windows PowerShell segue la logica chiara di una struttura di comando e di una sintassi coerenti e in questo senso è creata in maniera più sensata rispetto a cmd.exe.
Un’altra caratteristica che contraddistingue particolarmente Windows PowerShell: a differenza del prompt dei comandi e dei sistemi Unix-like, il programma funziona completamente basato su oggetti invece di restituire i risultati dei comandi solo testualmente (strings). Ogni oggetto ha proprietà (properties) e metodi (methods) che specificano come può essere usato. Ad esempio, l’oggetto processo di Windows rappresenta proprietà quali nomi e ID di processo e metodi per la pausa e la terminazione dei processi.
Poiché i risultati dei comandi vengono sempre emessi come oggetti .NET, PowerShell può essere usato tramite pipeline per eseguire compiti molto più complessi di cmd.exe. Questo funziona utilizzando l’output di un oggetto nella pipe come input per l’oggetto successivo. Ad esempio, è possibile filtrare grandi e complesse quantità di dati per le estensioni dei file e formattarli in un elenco chiaro.
Windows PowerShell è più di una semplice riga di comando; è un ambiente di scripting completo e potente. È possibile scrivere i propri comandi o combinare più comandi in script complessi che semplificano le attività di gestione del sistema. Il remoting consente inoltre di eseguire script su un numero indefinito di sistemi contemporaneamente, indipendentemente dalla posizione, e quindi di gestirli, configurarli, rilevarli e ripararli.
Questa varietà di opzioni e funzioni rivela anche qual è il principale target di Windows PowerShell, cioè professionisti IT e amministratori di sistema che hanno una conoscenza approfondita della gestione delle shell e sono disposti a imparare Windows PowerShell per ottenere una maggiore efficienza. Per gli utenti che lavorano principalmente con l’interfaccia grafica di Windows e utilizzano solo sporadicamente il prompt dei comandi, PowerShell non offre alcun particolare valore aggiunto, soprattutto perché i tempi di familiarizzazione sono piuttosto lunghi.
Di seguito riassumiamo nuovamente in maniera chiara i vantaggi e gli svantaggi di Windows PowerShell rispetto al prompt dei comandi:
I vantaggi di PowerShell |
Gli svantaggi di PowerShell |
✔ Disponibili tutti i comandi del prompt dei comandi |
✘ Apprendimento lungo e complesso |
✔ Accesso approfondito ai processi interni di Windows come il registro di sistema e la WMI |
✘ Si rivolge principalmente ai professionisti IT e agli amministratori di sistema |
✔ Uso più efficiente grazie a una struttura dei comandi e a una sintassi più consistente |
✘ Nessun uso aumentato per gli utenti della GUI che accedono al prompt dei comandi solo raramente |
✔ L’orientamento completo agli oggetti consente l’esecuzione di compiti più complessi tramite pipeline |
✘ Necessario un certo tempo di adattamento |
✔ L’ampio ambiente di scripting consente l’automazione efficiente dei processi |
|
✔ Amministrazione indipendente dal luogo di sistemi multipli tramite sistema remoto. |
Come funziona Windows PowerShell?
PowerShell consta essenzialmente di due parti, il PowerShell Engine e il PowerShell Scripting Language. Entrambi possono essere usati separatamente o in combinazione per ottenere il massimo dal programma.
Il PowerShell Engine
L’interprete a riga di comando (in inglese “command-line interpreter”, abbreviato in CLI) di PowerShell consente all’utente di accedere alle funzioni interne del sistema operativo tramite input da tastiera. I comandi corrispondenti del programma sono chiamati “cmdlets” (pronunciati “commandlets”, che significa approssimativamente “piccoli comandi”). Secondo una sintassi coerente, sono sempre composti da un verbo e un sostantivo al singolare, per esempio, Stop-Process o Sort-Object. I parametri sono specificati in un cmdlet secondo la formula -Parametro [Valore], per esempio:
Get-EventLog System Newest 3 (per richiamare le voci più nuove nel registro degli eventi del sistema)
Consiglio
Su PowerShell è consuetudine indicare i comandi con le lettere iniziali maiuscole, anche se funzionano ugualmente scrivendo tutto minuscolo.
Gli oltre 100 cmdlets principali includono anche i comandi standard usati frequentemente dal prompt dei comandi, che sono disponibili, tra gli altri, come alias, e sono destinati a rendere più facile per gli utenti iniziare a muovere i primi passi con la nuova shell. Per esempio, il comando cd usato per spostarsi in una directory ha il suo equivalente in Set-Location, che esegue esattamente la stessa funzione. Tutti gli alias già pronti possono essere visualizzati con il cmdlet Get-Alias. È inoltre possibile utilizzare il cmdlet Set-Alias per creare propri alias. Ad esempio, si utilizza la seguente pipe per assegnare l’alias “ed” al comando “notepad” (per il programma Notepad) in modo da non dover digitare tante volte per eseguire il programma:
Set-Alias ed notepad (per aprire Notepad con il comando ed)
Set-Alias scr1 C:\Users\IEUser\Desktop\script1.ps1 (per avviare uno script con l’abbreviazione scr1)
Con il cmdlet Get-Alias vengono mostrati tutti gli alias preimpostati di PowerShell.
La seguente tabella comprende alcuni esempi di cmdlets frequenti e i rispettivi alias:
Alias |
Cmdlet |
Funzione |
cd |
Set-Location |
Spostarsi nella cartella corrente |
dir |
Get-ChildItem |
Elencare tutti gli elementi di una cartella |
gi |
Get-Item |
Richiamare un elemento determinato |
ps |
Get-Process |
Elencare tutti i processi |
gsv |
Get-Service |
Elencare tutti i servizi installati |
gm |
Get-Member |
Indicare tutte le proprietà e i metodi di un oggetto |
clear |
Clear-Host |
Svuotare l’host PowerShell |