HomeComputer, componenti e accessoriEstendere le funzionalità di PowerShell con i moduli

Estendere le funzionalità di PowerShell con i moduli

PowerShell è uno strumento molto potente messo a disposizione da Microsoft per gli utenti di Windows.

La nuova interfaccia a riga di comando, che ha sostituito il CMD come opzione predefinita, permette di gestire automazioni e routine, interagire con il registro di sistema, controllare il PC da remoto.

Per farlo, PowerShell dispone di un gran numero di cmdlet nativi, ossia i comandi veri e propri che un utente può dare all’interfaccia per ottenere un risultato.

Ci sono tuttavia casi in cui questi ultimi  non bastano. Magari devi eseguire operazioni più complesse che richiedono sequenze di comandi troppo lunghe per essere pratiche. Che fare allora?

Qui entrano in gioco i moduli, pacchetti di cmdlet, funzioni, provider e risorse che si installano con un singolo comando ed espandono le potenzialità della shell.

In questa guida, vedremo proprio come estendere le funzionalità di PowerShell con i moduli, quali sono i più utili e quali errori evitare.

Iniziamo subito! 🙂

Estendere le funzionalità di PowerShell con i moduli

Cosa sono i moduli di PowerShell

Come ti dicevo nell’introduzione, un modulo PowerShell è un’unità di codice confezionata e distribuibile che estende l’interfaccia a riga di comando con nuovi comandi e funzioni.

Puoi intenderlo come un piccolo programma che funziona all’interno della shell per estenderne le funzionalità.

Ad oggi i moduli sono tantissimi e vengono sviluppati sia da Microsoft sia dalla community degli appassionati, proprio per sfruttare appieno la grande versatilità di questo strumento.

In particolare, l’architettura a moduli è una scelta di design precisa. Piuttosto che avere una shell monolitica che ha tutto già incorporato, PowerShell parte da una base solida in grado di espandersi in modo selettivo.

Installi ciò che ti serve, mantenendo leggera la struttura di fondo ma potendo eseguire compiti anche molto complessi o molto specifici.

Come installare un modulo PowerShell

Dal punto di vista pratico, lavorare con i moduli richiede pochi comandi fondamentali. Ecco allora alcuni comandi utili che permettono di interagire con i moduli PowerShell:

  • Install-Module -Name NomeModulo -Force, per installare un modulo dalla PowerShell Gallery;
  • Import-Module NomeModulo, per importare il modulo nella sessione corrente;
  • Get-Command -Module NomeModulo, per vedere tutti i cmdlet che un modulo espone;
  • Update-Module -Name NomeModulo, per aggiornare un modulo già installato.

La PowerShell Gallery è il repository ufficiale in cui puoi trovare i moduli più usati per PowerShell. Ricorda però verificare sempre l’origine e la reputazione degli sviluppatori, prima di installare un modulo da fonti non ufficiali.

Esempi di moduli PowerShell

Per capire nel concreto a cosa servono i moduli PowerShell, e prima di mostrarti quali sono i principali, è bene fare qualche esempio pratico.

Esempi di moduli sono infatti:

  • Az, Azure PowerShell. Forse il modulo più diffuso, permette di gestire le risorse Azure: potrai creare macchine virtuali, configurare reti virtuali, gestire account direttamente dalla shell.
  • Microsoft.Graph. Si tratta di un modulo che permette di interagire con le API di Microsoft 365, e quindi di leggere e modificare utenti Azure, gestire licenze, recuperare dati da Microsoft Teams.
  • Posh-SSH. Questo modulo aggiunge il supporto al protocollo SSH, consentendo connessioni sicure, trasferimento file via SFTP ed esecuzione di comandi remoti su Linux da PowerShell.
  • ImportExcel. Come dice il nome stesso, permette di leggere e scrivere file .xlsx senza avere Excel installato sul sistema. Lo si usa per generare report automatici da script ed esportare dati.

Questi sono moduli molto utilizzati e apprezzati, ma rappresentano soltanto la superficie delle potenzialità di Powershell. Andiamo più in profondità! 🙂

Estendere le funzionalità di PowerShell con i moduli

Dopo il piccolo assaggio del paragrafo precedente, adesso vedremo davvero come estendere le funzionalità di PowerShell con i moduli. E lo faremo trattando quattro casi particolari:

  • PSWindowsUpdate, per la gestione degli aggiornamenti sui singoli client;
  • PoshWSUS, per la gestione di un server WSUS interno;
  • Carbon, per la configurazione avanzata del sistema;
  • NTFSSecurity, per i permessi NTFS avanzati.

Si tratta di moduli disponibili gratuitamente sulla PowerShell Gallery, e come vedi ognuno può essere molto utile per risolvere problemi reali troppo complessi per i semplici cmdlet.

Vediamoli nello specifico!

Modulo PSWindowsUpdate

PSWindowsUpdate è il modulo di riferimento per la gestione degli aggiornamenti di Windows da riga di comando. Nello specifico consente di:

  • verificare se sono disponibili aggiornamenti di Windows per il computer;
  • gestire gli aggiornamenti di Windows su vari server e workstation;
  • automatizzare l’installazione degli aggiornamenti da remoto.

Da questa descrizione comprendi quali possano essere i campi di applicazione del modulo, che risulterà utile per gli amministratori IT nella gestione di decine o centinaia di macchine.

Ecco i comandi per l’installazione e l’utilizzo di PSWindowsUpdate:

  • Install-Module -Name PSWindowsUpdate -Force, per l’installazione;
  • Import-Module PSWindowsUpdate, per l’importazione.

Un comando particolarmente utile è Get-WUInstall, che installa gli aggiornamenti e può persino filtrare per specifiche categorie di update.

Ci sono poi comandi come Get-WindowsUpdate, che verifica gli aggiornamenti disponibili, e Install-WindowsUpdate -AcceptAll -AutoReboot, che installa tutti gli aggiornamenti.

Ricorda di usare il parametro -ComputerName se intendi anche gestire macchine remote. Ricorda però che WinRM deve essere abilitato sulle macchine di destinazione. Qui trovi una guida su come fare.

Modulo PoshWSUS

WSUS significa Windows Server Update Services, per cui puoi già immaginare di cosa si occupa PoshWSUS. Si tratta di un modulo che molte aziende impiegano per centralizzare e controllare la distribuzione di aggiornamenti dal server ai PC della rete.

L’installazione avviene allo stesso modo che abbiamo visto per PSWindowsUpdate, ossia con cmdlet come:

  • Install-Module -Name PoshWSUS -Force;
  • Import-Module PoshWSUS.

Un caso d’uso frequente è la gestione degli aggiornamenti di anteprima che non si vogliono installare sulle macchine della rete. Il comando da usare è quindi Deny-PoshWSUSUpdate.

Inoltre, con PoshWSUS è possibile automatizzare la sincronizzazione degli aggiornamenti a partire dal server Microsoft a un server WSUS, con il cmdlet Start-PoshWSUSSync.

Puoi già intuire il vantaggio di questo modulo: piuttosto che aprire la console di amministrazione WSUS, puoi semplicemente pianificare e automatizzare script su PowerShell.

Modulo Carbon

Modulo di utilità generale, Carbon è pensato per automatizzare un insieme molto ampio di compiti di amministrazione di sistema.

Una volta effettuata l’installazione o l’importazione, potrai usare cmdlet come:

  • Grant-CFileSharePermission, per assegnare le autorizzazioni agli utenti in una cartella condivisa;
  • Get-CProgramInstallInfo, un equivalente nella shell di “Programmi e funzionalità” di Windows;
  • Get-CCertificate, per recuperare i certificati digitali dall’archivio del sistema operativo;
  • Grant-CPrivateKeyPermission, per modificare le autorizzazioni di accesso alla chiave privata di un certificato;
  • Add-CLocalGroupMember, per aggiungere utenti in un gruppo locale, con il corrispettivo Remove-CLocalGroupMember per rimuoverli.

Come vedi, Carbon è un toolkit di amministrazione generale che copre molte attività quotidiane e risulta quindi essenziale per chi gestisce sistemi Windows in modo professionale.

Modulo NTFSSecurity

I permessi NTFS sono uno degli aspetti più complessi della gestione di sistemi Windows. Essi non si limitano infatti a stabilire quali utenti possono accedere a determinate cartelle e leggerne o modificarne il contenuto, ma gestiscono anche l’incrocio di più permessi, anche contraddittori, per:

  • garantire un accesso sicuro ed effettivo agli utenti autorizzati;
  • evitare aperture o chiusure del percorso a chi non deve o deve accedere.

Ora, PowerShell ha dei cmdlet specifici per i permessi NTFS, per esempio Get-Acl e Set-Acl, ma le strutture dati coinvolte sono tutt’altro che intuitive.

Entra allora in gioco il modulo NTFSSecurity, che risolve il problema con cmdlet diretti e leggibili, come:

  • Get-NTFSEffectiveAccess, che trova l’autorizzazione effettiva di un utente su un percorso specifico;
  • Set-NTFSOwner, che imposta il proprietario su un file o una cartella;
  • Get-NTFSOwner, che mostra il proprietario corrente.

Se poi combini la semplicità di NTFSSecurity con la sua capacità di agire su percorsi remoti e di iterare su directory, comprendi quanto sia uno strumento molto potente in ambienti aziendali.

Buone pratiche ed errori da evitare

Lavorare con i moduli PowerShell è semplice e intuitivo, soprattutto se gestisci quotidianamente server e client con Windows.

Ci sono tuttavia alcune buone pratiche che possono fare la differenza fra un uso efficace e un maggiore rischio di problemi. Ecco le principali:

  • installare solo dalla PowerShell Gallery o da fonti verificate, e anche in questo caso è fondamentale assicurarsi di verificare l’identità dell’autore e leggere il codice, se possibile;
  • verificare la Execution Policy prima di importare moduli, tramite il comando Get-ExecutionPolicy, mentre con Set-ExecutionPolicy RemoteSigned puoi eseguire script locali e remoti firmati;
  • tenere i moduli aggiornati, in modo da ricevere aggiornamenti di sicurezza e correzioni di bug, tramite cmdlet come Update-Module o Update-Module -Name PSWindowsUpdate, per update specifici.

Ricorda poi di non confondere Import-Module con Install-Module, ossia l’installazione con l’importazione del modulo. La prima scarica il modulo sul disco, la seconda lo carica nella sessione corrente.

Da PowerShell 3 in poi, il caricamento di un modulo avviene in automatico quando usi un suo cmdlet, ma in alcuni contesti potrebbe essere necessaria l’importazione.

Conclusioni

Estendere le funzionalità di PowerShell con i moduli permette di semplificare e automatizzare operazioni potenzialmente molto complesse.

Certo, non tutti ne avranno bisogno, ma anche qui abbiamo visto le potenzialità di uno strumento molto potente.

Se non ti serve ancora il grado di automazione che abbiamo visto qui, potrà interessarti la guida ai principali comandi di PowerShell, già presenti e utilizzabili.

Se invece cerchi un modo per potenziare il tuo hardware e gestire al meglio le tue automazioni, ti consiglio di leggere la guida sulle configurazioni per PC da gaming.

Sono perfette per videogiocare, ma hanno anche la potenza di calcolo necessaria per gestire script e carichi di lavoro più intensi. 🙂

Matteo Zigliani
Matteo Ziglianihttps://robadainformatici.it
CEO & Founder di www.robadainformatici.it, vivo l'informatica come una passione. Di giorno aiuto le persone a sfruttare la tecnologia a proprio favore, nel tempo libero condivido queste fantastiche conoscenze in questo spazio, con il resto della rete.

Articoli correlati

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome qui
Captcha verification failed!
CAPTCHA user score failed. Please contact us!

CIAO IO SONO MATTEO!

Creativo, appassionato e divoratore di qualsiasi novità; così descrivo al meglio la mia persona.
Da più di 15 anni mi occupo di informatica, collaboro con persone ed aziende per trovare ogni giorno soluzioni che migliorino la convivenza tra uomo e computer. Sin da piccolo ho sempre nutrito una forte passione per questo mondo, e non vedo l'ora di raccontare tutte le mie esperienze a te! ;-)

Unisciti a più di 5.000 iscritti!

Da anni Roba da Informatici è un portale dedicato al mondo tech e siamo orgogliosi di aver aiutato più di 10 milioni di persone con i nostri articoli, recensioni e tutorial.

Entra anche tu a farne parte!
Riceverai contenuti premium, News dal mondo tech e tanto altro ancora.



Più letti