Microsoft PowerShell è un motore di automazione orientato agli oggetti e un linguaggio di scripting sviluppato da Microsoft per assistere i professionisti IT nella configurazione dei sistemi e nell’automazione delle attività amministrative. Utilizzando PowerShell gli utenti possono eseguire una serie di comandi, o cmdlet, per raggiungere diversi obiettivi funzionali, all’interno di un ambiente di scripting orientato agli oggetti che viene interpretato piuttosto che compilato. Con le continue nuove versioni di PowerShell rilasciate da Microsoft e dalla comunità di sviluppatori, anche i CIO più esperti possono trovarsi disorientati di fronte alla vasta gamma di risorse disponibili.
PowerShell: contesto e funzionamento
PowerShell, originariamente sviluppato come un prodotto esclusivo per Windows, si basa sul framework .NET e lavora con oggetti, contrariamente a molte altre shell di comando che operano su testo. Nel 2016, Microsoft ha ampliato la portata di PowerShell, rendendolo disponibile su Linux e MacOS e oggi è preimpostato sui sistemi Windows più recenti. PowerShell si è affermato come uno strumento di automazione affidabile e testato per gli amministratori di sistema. L’impiego di PowerShell non è limitato ai reparti IT, ma si estende anche a entità esterne, come i fornitori di servizi gestiti, grazie alle sue potenti capacità di scripting.
Cosa fa PowerShell?
PowerShell è stato progettato da Microsoft per automatizzare le attività di sistema, come l’elaborazione in batch, e per sviluppare strumenti di gestione del sistema per i processi comunemente implementati. Il linguaggio di scripting PowerShell, simile a Perl, offre vari metodi per automatizzare le attività:
- Con cmdlets, che sono classi .NET molto piccole che appaiono come comandi di sistema
- Con gli script, che sono combinazioni di cmdlet e logica associata
- Con gli executables, che sono strumenti autonomi
- Con la creazione di istanze di classi .NET standard
Gli amministratori possono sfruttare PowerShell per gestire un’ampia varietà di attività. È possibile ottenere informazioni sui sistemi operativi, come la versione specifica e i livelli di service pack. I PowerShell providers sono programmi che rendono i dati dei repository specializzati accessibili dalla riga di comando, inclusi i file system e i registri di Windows. Ad esempio, Microsoft ha designato PowerShell come l’interfaccia della riga di comando (Command-Line Interface – CLI) predefinita per Windows 10 a partire dalla build 14791. Il ruolo di PowerShell come shell della riga di comando è spesso il primo punto di contatto per molti utenti con questa tecnologia.
Quali sono i vantaggi di usare PowerShell
PowerShell, con la sua CLI con un linguaggio di scripting maturo e dettagliato, offre notevoli vantaggi, rendendolo accessibile anche agli utenti con competenze di programmazione di base. Gli utenti possono creare uno script specifico e dettagliato per eseguire un’attività, che può variare dalla ricerca di un file alla descrizione di una configurazione di stato per uno o più sistemi. Una volta creato, lo script PowerShell può essere salvato come file ed eseguito con un singolo clic, permettendo di ripetere la stessa attività in modo identico. Gli script PowerShell possono anche essere concatenati per creare compiti complessi e dettagliati.
I vantaggi di PowerShell, sebbene apparentemente semplici, sono fondamentali per l’automazione e la scalabilità, permettendo all’elaborazione automatica di gestire tutto il lavoro. Di conseguenza, PowerShell può assistere gli amministratori di sistema nell’eseguzione di attività complesse e altamente ripetitive con un livello di automazione e precisione che una semplice GUI non può eguagliare.
Moduli di PowerShell: che cosa sono e a cosa servono
Un modulo PowerShell può essere definito come un insieme di elementi PowerShell, ad esempio cmdlet, provider, funzioni, flussi di lavoro, variabili e alias, raggruppati in modo da poter gestire tutti gli aspetti di una particolare area. Questi moduli consentono agli amministratori di fare riferimento, caricare e condividere il codice. Il modo più semplice per creare un modulo PowerShell consiste nel salvare lo script come file PSM1.
Un modulo PowerShell contiene quattro elementi essenziali:
- Un file PSM, che è il modulo.
- File di aiuto o script necessari al modulo.
- Un file manifest che descrive il modulo.
- Una directory che memorizza il contenuto.
Le tipologie di moduli della Gallery di PowerShell
Il processo di installazione dei moduli è semplice: basta usare il cmdlet Install-Module di PowerShell. Di seguito le tipologie di moduli:
- Modulo di script. Un file PSM1 che contiene varie funzioni per consentire agli amministratori di eseguire funzioni di importazione, esportazione e gestione
- Modulo binario. Un assembly .NET Framework (file DLL) che contiene codice compilato. Gli sviluppatori usano in genere un modulo binario per creare cmdlet con potenti funzionalità non facilmente eseguibili con uno script di PowerShell.
- Modulo manifesto. Un modulo manifesto è un file di modulo (PSM1) con un manifesto associato (file PSD1).
- Modulo dinamico. Un modulo dinamico viene creato dinamicamente su richiesta da uno script. Non viene archiviato o caricato in un archivio permanente.
La maggior parte dei moduli della community si trova nel repository centrale di PowerShell, la PowerShell Gallery. Tuttavia, i professionisti IT possono anche trovare moduli o script su GitHub.
PowerShell Gallery: come orientarsi
Allo stato attuale sono più di 3.000 i moduli presenti nella PowerShell Gallery, anche perché la community di PowerShell continua a pubblicare nuove modalità d’uso che, a livello di sviluppo, contribuiscono a creare nuovi moduli PowerShell che automatizzano i processi e la gestione del data center.
L’aspetto dell’estensibilità di PowerShell è uno dei suoi numerosi punti di forza. Questi componenti aggiuntivi possono aiutare a essere più efficienti e offrire molte opzioni di personalizzazione. Le nuove funzionalità vanno dalle modifiche dell’interfaccia utente, come l’aggiunta di colori, all’apertura del prompt di PowerShell, alle capacità di Intelligenza Artificiale del cloud di Azure per facilitare lo sviluppo di script.
I 4 moduli più importanti di PowerShell
Gli esperti evidenziano i 4 moduli più importanti di PowerShell:
#1 Modulo PSWindowsUpdate
La distribuzione degli aggiornamenti di Windows con il codice non è mai un compito facile, ma il modulo PSWindowsUpdate è un ottimo ausilio perché consente di:
- disinstallare gli aggiornamenti
- installare gli aggiornamenti locali
- installare gli aggiornamenti in remoto
- visualizzare la cronologia delle installazioni degli aggiornamenti (anche di quelli in sospeso)
Uno dei cmdlet particolarmente utili in PSWindowsUpdate è Get-WULastResults, che recupera l’ultimo risultato di una ricerca di Windows Update e lo stato dell’installazione.
Il cmdlet Get-WUInstall installa gli aggiornamenti e può persino filtrare per specifiche categorie di aggiornamento e aggiornamenti della knowledge base (KB). Sotto, nell’immagine di esempio è riportata l’installazione dell’aggiornamento KB4034658:
#2 Modulo PoshWSUS
PoshWSUS è un modulo per la gestione dei servizi di aggiornamento di Windows Server ancora molto diffusi. Utilizzando questo modulo è possibile cercare gli aggiornamenti installati sul server WSUS, approvare o rifiutare gli aggiornamenti e modificare le configurazioni WSUS.
C’è un modo pratico per automatizzare il declino degli aggiornamenti di anteprima di Windows. Nell’esempio sotto riportato, viene interrogato il server WSUS per eventuali aggiornamenti che contengono la stringa “Preview of” che non sono già stati rifiutati per poi essere inviati a Deny-PoshWSUSUpdate.
Un’altra grande attività che può essere automatizzata con WSUS è la sincronizzazione degli aggiornamenti dai server Microsoft a un server WSUS interno, utilizzando il cmdlet Start-PoshWSUSSync:
PowerShell consente inoltre di combinare facilmente i cmdlet negli script. Basta sincronizzare WSUS e impostare il sistema in modo da far sì che rifiuti qualsiasi aggiornamento.
#3 Modulo Carbon
Carbon è un modulo molto noto, creato per molte attività diverse: interazioni con utenti, siti Web, certificati, servizi, file host, autorizzazioni file e altre aree di Windows.
Un cmdlet univoco è Get-CProgramInstallInfo, che equivale all’utilizzo di Programmi e funzionalità nella GUI di Windows.
L’esempio più sotto mostra come ottenere informazioni su un’installazione locale di Google Chrome. In questo esempio, è possibile visualizzare informazioni utili, come la data di installazione, la lingua, l’origine dell’installazione e la stringa di disinstallazione. Da notare come la stringa di disinstallazione sia il comando utilizzato per disinstallare il software dal sistema.
Molte applicazioni richiedono l’installazione di .NET Framework su un sistema. Con Carbon è possibile usare il cmdlet Test-CDotNet per vedere se è stata installata la versione 2 o la versione 4.
#4 Modulo NTFSSecurity
Sebbene PowerShell disponga del supporto nativo per lavorare con i permessi dei file NTFS, il modulo NTFSSecurity offre un approccio più user-friendly e intuitivo.
Un’informazione comune che un amministratore IT deve conoscere è l’autorizzazione effettiva per un utente su un file o una cartella. L’autorizzazione effettiva è il risultato dell’appartenenza al gruppo di un utente, autorizzazioni ereditate, gruppi nidificati e autorizzazioni negate.
Ecco come il cmdlet Get-NTFSEffectiveAccess trova l’autorizzazione effettiva del percorso locale c:\temp:
Un’altra attività comune è l’impostazione della proprietà su un file o una cartella con NTFS. Qui, la cartella c:\temp è impostata per avere “Dan” come proprietario. Quindi, puoi utilizzare Get-NTFSSOwner per visualizzare il proprietario corrente.
Articolo originariamente pubblicato il 30 Mag 2023