PowerShell è un framework (Microsoft .NET) per l’automazione dei batch e dei task creato dalla casa di Redmond nel 2003 e utilizzato per la prima volta nella versione di Windows Server 2003 R2.
Premesso che in un sistema operativo la shell è l’interfaccia che consente agli utenti di interagire con il sistema stesso per impartire comandi o richiedere l’avvio di altri programmi, PowerShell rappresenta la versione potenziata da Microsoft con ulteriori strumenti di gestione. Microsoft ha sviluppato numerosi strumenti per semplificare le attività in Windows Server 2019, ma le competenze degli amministratori non sempre permettono di sfruttarne appieno le opportunità a livello di automazione.
Indice degli argomenti
Da proprietario a opensource
Dall’agosto 2016 PowerShell è diventato un software open source, disponibile sia per Linux sia per mac Os.
Oggi il framework è installato nativamente su tutti i sistemi Windows Server, ma anche su tutte le versioni professionali Windows desktop. Microsoft, nel corso degli anni, con Windows Server 2019 ha migliorato la qualità della gestione ma gli amministratori spesso non sono in grado di avvantaggiarsi delle varie opzioni funzionali.
Interfaccia a riga di comando e programmazione ad oggetti
Il linguaggio utilizzato da PowerShell è uno scripting orientato agli oggetti: il che significa che non è compilato, ma interpretato. In sintesi, l’utente ha a disposizione una serie di comandi (cmdlet) che possono essere eseguiti in base a diversi obiettivi funzionali. A seguito di tutte le nuove release di PowerShell rilasciate da Microsoft e dalla community di sviluppatori anche i CIO più esperti possono trovarsi spaesati di fronte alla quantità di risorse disponibili.
Powershell: come utilizzarlo al meglio
Gli esperti consigliano agli amministratori di sistema di documentarsi meglio leggendo, ad esempio, Windows Server 2019 Automation with PowerShell Cookbook di Thomas Lee che aiuta a capire come automatizzare utilizzando i moduli sviluppati dalla community per gestire Active Directory, file system e sicurezza.
Dell’ultima versione di Windows Server, che include Windows PowerShell 5.1, gli amministratori potrebbero non aver colto la necessità di avere competenze più spinte a livello di scripting dovendo avere a che fare con il Windows Admin Center.
Intervista TechTarget a Thomas Lee
L’autore del volume, Thomas Lee, ha seguito le modifiche apportate a PowerShell sin dal suo lancio nel 2003. In questa intervista l’esperto risponde a diverse domande.
Differenze tra release 2016 e release 2019
TechTarget: Nell’evolutiva di PowerShell quali modifiche sono state apportate da Server 2016 a Server 2019?
Thomas Lee: Per chi conosce la versione 2016, la 2019 risulterà molto intuitiva e pratica. La release 2016 puntava a un modello PowerShell centrico e chiavi in mano. Idealmente, gli amministratori avrebbero potuto provare a risolvere tutto attraverso il framework di Microsof. Se non che, col tempo, si è scoperto che molte cose in Windows non erano tutte risolvibili attraverso PowerShell. Il grande cambiamento a livello di gestione dalla versione 2016 alla versione 2019 è stato l’ingresso sul mercato dei moduli realizzati da terze parti. Per fare un esempio concreto, quando ho cercato di includere una serie di funzioni su oggetti .NET per impostare gli elenchi di controllo degli accessi, mi sono ritrovato a utilizzare un modulo di sicurezza NTFS (New Technology File System), sviluppato da terze parti, che mi ha permesso di gestire l’accesso agli archivi dei file. Piuttosto che cercare di smanettare con gli oggetti del framework .NET sottostanti, mi è bastato usare questo modulo per risolvere il mio obiettivo. Non a caso, nel mio ultimo libro ho preferito approfondire tutti gli aspetti legati ai moduli realizzati dalla grande community di PowerShell più che a focalizzarmi sull’uso di PowerShell allo stato puro.
Un’altra grande differenza tra le due versioni è la documentazione. Quando abbiamo pubblicato il libro del 2016, la documentazione che è stata rilasciata su TechNet su microsoft.com era terribile. C’erano componenti della programmazione che riportavano errori di battitura, erano troppo semplici oppure semplicemente sbagliati. Per questi motivi PowerShell non ha funzionato come avrebbe potuto.
Oggi la documentazione è stata sostituita. Docs.microsoft.com, infatti, è un mondo completamente nuovo: tutto è open source e basato su GitHub. Rispetto al mio primo libro, avrò corretto più di 50 errori a livello di documentazione.
La decisione di aprire il codice sorgente di PowerShell e la nuova documentazione hanno rivoluzionato metodi e approcci. I professionisti IT oggi possono davvero avere un livello di confidenza più elevato nella documentazione e possono trovare quello che cercano in modo molto efficace, potendo così risolvere impostazioni e comandi senza problemi.
TechTarget: Con Windows Server 2019 gli amministratori devono utilizzare PowerShell anche quando possono utilizzare Windows Admin Center (WAC)?
Thomas Lee: Se si sta gestendo una vasta suite di applicazioni, WAC offre molta flessibilità e molte funzionalità. Il che andrà bene per alcune persone, ma più per avere visione di cosa sta succedendo che per cambiare quel che sta succedendo. Per le PMI, ad esempio, Windows Admin Center è la soluzione più adatta soprattutto per chi non ha voglia di imparare a usare PowerShell. Non utilizzare PowerShell limita l’orizzonte delle possibilità perché si rimane vincolati a ciò che il progettista della GUI di Windows Admin ha deciso di offrire. Inoltre è difficile che si scelga di usare WAC per configurare 200 server Exchange o 2000 server (Internet Information Services)…
Moduli di terza parti essenziali
TechTarget: Quali sono alcuni moduli di terze parti che sono essenziali per funzionare con Windows Server 2019?
Thomas Lee: La sicurezza NTFS ad esempio. Ci sono aggiornamenti a PSReadLine che, se si stanno usando le configurazioni di stato desiderate, richiederà un modulo out of the box. Molti dei moduli di PowerShell sono, in realtà, scritti comunque da Microsoft e sono di altissima qualità. Il cambio di passo è comunque legato a tutte le iniziative promosse dalla comunità open source. Il che, per altro, riflette l’apertura che Microsoft ha nei confronti di PowerShell.
TechTarget: Quali attività è possibile utilizzare PowerShell per completare in Windows Server 2019?
Thomas Lee: È necessario esaminare le singole funzionalità di Windows per capire come eseguire l’installazione di base. Questa è la vera sfida. Se si intende installare il Dynamic Host Configuration Protocol e si conoscono le finalità la domanda che bisogna porsi è come partizionare ciò che va fatto. Si prenda il caso di stabilire la protezione di un server SMB (Server Message Block) in un file server e renderlo sicuro in modo da poter disabilitare il protocollo SMB1. È possibile attivare la firma dei pacchetti e la crittografia dei pacchetti per evitare lo spoofing degli attacchi man-in-the-middle.
Ci sono alcune tecniche legate all’uso di PowerShell che non sono specificamente correlate a Windows come, ad esempio, l’esecuzione di alcune operazioni in PowerShell. Ad esempio, ci sono un paio di modi per rimuovere gli oggetti di Active Directory e ognuno presenta dei vantaggi e degli svantaggi.
- Uno è Get-Remove, che consente di ottenere gli utenti che mi interessano per canalizzarli e così rimuovere gli utenti a livello dell’Active Directory.
- L’altro modo è praticare una rimozione diretta
In realtà PowerShell nella sua ultima versione offre funzioni che molti professionisti IT probabilmente non sanno nemmeno che esistano nel sistema operativo.
In Exchange Online, la GUI esegue determinate operazioni, ma non tutte perché è necessario usare PowerShell.
Ad esempio, Hyper-V: non sono sicuro che esista un modo per abilitare la virtualizzazione dell’identità incorporata senza PowerShell. PowerShell si basa sull’automazione, sul rendere le cose più affidabili e così via. La GUI non è stata ridimensionata. Non è ripetibile e non è affidabile.
Il futuro di PowerShell e il ruolo della community
TechTarget: Qual è il futuro di PowerShell?
Thomas Lee: Sembra che PowerShell stia andando in due direzioni contemporaneamente. Uno è una dimensione multipiattaforma. Ora abbiamo PowerShell per Linux e Mac e non servono incantesimi magici per poterlo installare anche su quelle piattaforme. La vera domanda è perché PowerShell 6.0 rappresenti un po’ uno scoglio per i team IT. Questa versione, basata su PowerShell Core, è open source e porterà una spinta propulsiva a chi imparerà a utilizzarla. Un’altra componente evolutiva è la spinta verso il cloud. Il modo in cui Microsoft sta posizionando il cloud cambierà il futuro della gestione. Quando PowerShell potrà gestire l’AI su Office 365 nel cloud cambieranno tutti i paradigmi della governance.
TechTarget: Come cresce la comunità attorno a PowerShell?
Thomas Lee: Rispetto ai suoi esordi, PowerShell oggi ha potenziato sia la struttura dei comandi che la struttura dei moduli. La community, attraverso Spiceworks, PowerShell.org e Reddit, offre una grande assistenza a PowerShell. Oggi non solo sono milioni i download dalla PS Gallery e la community è sempre disponibile a risolvere i problemi che insorgono. La cross-platform è davvero funzionale e la stessa Microsoft è cambiata molto nel suo supporto.