PowerShell è una shell a riga di comando e un linguaggio di scripting orientato agli oggetti, sviluppato da Microsoft per la gestione e l’automazione delle configurazioni del sistema operativo Windows e delle applicazioni aziendali. Nato come progetto “Monad” nei primi anni 2000, è entrato ufficialmente a far parte di Windows con Windows PowerShell 1.0 nel 2006, al fine di offrire uno strumento più potente, flessibile e moderno rispetto al tradizionale Prompt dei comandi (cmd.exe
).
A differenza del Prompt dei comandi, che lavora principalmente con stringhe di testo, PowerShell è progettato per manipolare oggetti .NET, permettendo una gestione più strutturata e precisa delle risorse di sistema. Gli amministratori possono utilizzare PowerShell per automatizzare attività complesse, gestire utenti, processi, servizi, file system, registry, componenti di rete e molto altro, con un controllo granulare su ogni elemento.
Nella nuova finestra del terminale di Windows 10 e Windows 11, PowerShell fa la parte del leone accanto a WSL (Windows Subsystem for Linux), Azure Cloud Shell e allo storico Prompt dei comandi.
Storia di PowerShell e transizione tra versioni
PowerShell nasce come un’interfaccia a riga di comando e linguaggio di scripting orientato agli oggetti, progettato per automatizzare l’amministrazione dei sistemi Windows sfruttando il framework .NET. Con PowerShell 2.0 (2009), Microsoft introduce funzionalità fondamentali come la gestione remota, i background jobs e una maggiore estensibilità, rendendolo uno strumento chiave negli ambienti enterprise.
Le successive versioni 3.0 e 4.0 (tra il 2012 e il 2013) aggiungono importanti miglioramenti nella gestione dei flussi di lavoro, nel debugging e nell’integrazione con Desired State Configuration (DSC). Quest’ultima è una funzionalità di PowerShell che consente di automatizzare la configurazione di sistemi definendo lo “stato desiderato” di una macchina (ad esempio servizi attivi, ruoli installati, file presenti) in un file di configurazione.
PowerShell 5.1, rilasciato nel 2016 e integrato in Windows 10 e Server 2016, rappresenta l’apice della serie “Windows PowerShell”, ed è ancora largamente usato per la compatibilità con i moduli legacy basati sul .NET Framework.
Il punto di svolta arriva con PowerShell Core 6.x (2018): basato su .NET Core, multipiattaforma e open source, sebbene con compatibilità limitata.
La maturità arriva con PowerShell 7, evoluzione diretta del ramo Core, che unifica potenza e compatibilità, supportando moduli di Windows PowerShell e introducendo funzionalità avanzate come le pipeline parallele, miglioramenti nella gestione degli errori e l’integrazione con strumenti DevOps.
Il passaggio da PowerShell 5.1 a 7.x non è un semplice aggiornamento, ma una transizione di piattaforma, tanto che Microsoft permette la coesistenza di entrambe le versioni: 5.1 per la retrocompatibilità e 7.x per la modernizzazione degli ambienti. Con il supporto continuo e cicli di rilascio regolari, PowerShell 7 è oggi lo standard de facto per la gestione cross-platform di sistemi e ambienti cloud-native.
Controllate la versione di PowerShell installata in Windows
Provate a digitare quanto segue in una finestra PowerShell, in Windows 10 o in Windows 11:
$PSVersionTable
Potete stabilire immediatamente la versione di PowerShell in uso: in molti casi leggerete proprio un riferimento alla versione 5.1.
Addio definitivo a PowerShell 2.0 con Windows 11
Con il rilascio di una versione di anteprima a luglio 2025, Microsoft ha ufficialmente eliminato PowerShell 2.0 da Windows 11. Questo passo, apparentemente tecnico e invisibile alla maggior parte degli utenti, rappresenta in realtà una tappa significativa nel percorso di rafforzamento della sicurezza del sistema operativo. La rimozione di PowerShell 2.0 sarà estesa a tutti gli utenti in un aggiornamento futuro e mette fine a una versione obsoleta e a lungo considerata insicura della shell di comando.
Cos’è PowerShell 2.0 e perché è stata rimossa
Sostituita, con il tempo, da PowerShell 5.x e PowerShell 7 (basata su .NET Core), Microsoft aveva già accantonato ufficialmente il supporto per PowerShell 2.0 nel 2017. La shell era però ancora presente nel sistema operativo per motivi di compatibilità con software legacy come SQL Server ed Exchange Server.
Il problema centrale è la superficie di attacco più estesa che PowerShell 2.0 introduce: una shell priva di funzioni di logging avanzate, senza le moderne protezioni di sicurezza, e spesso utilizzata da malware e script malevoli, analogamente ai macro VBA in Office. Non a caso, PowerShell 2.0 è stata negli anni un obiettivo ricorrente per gli attori di minacce, in particolare in attacchi mirati a infrastrutture aziendali.
La rimozione di PowerShell 2.0 da Windows 11 non avrà impatti sulla maggior parte degli utenti finali, ma chi gestisce infrastrutture IT o mantiene script legacy potrebbe dover intervenire.
Gli sviluppatori e gli amministratori di sistema sono invitati a effettuare un audit completo dei propri ambienti, aggiornare gli script alle versioni moderne della shell (almeno PowerShell 5.1, idealmente PowerShell 7.x), e testare la compatibilità prima della distribuzione dell’aggiornamento definitivo.
Un altro passo verso la modernizzazione e la sicurezza di Windows: PowerShell 2.0 potrebbe essere ancora sui vostri sistemi
La scelta di Microsoft riflette una strategia chiara: ridurre la dipendenza da componenti software obsoleti e migliorare la sicurezza di base del sistema operativo.
La modernizzazione di Windows passa anche da questi interventi chirurgici: PowerShell 2.0 non era più solo un residuo del passato, ma un anello debole nella catena della sicurezza. Rimuoverlo è una scelta logica, tardiva ma necessaria.
Suggeriamo di premere la combinazione di tasti Windows+R
quindi digitare optionalfeatures
per poi scorrere l’elenco fino a individuare la voce Windows PowerShell 2.0.
Per eliminare PowerShell 2.0, è sufficiente togliere il segno di spunta dalla casella corrispondente quindi fare clic sul pulsante OK. Se la casella Windows PowerShell 2.0 non fosse attiva, significa che PowerShell 2.0 non è presente. Microsoft eliminerà da Windows 11 il riferimento a PowerShell 2.0 nella finestra Funzionalità di Windows.
Migrazione a PowerShell 7: guida tecnica all’evoluzione della shell Microsoft
Con l’introduzione di PowerShell 7, Microsoft ha ridefinito il ruolo della propria shell di automazione, proiettandola verso ambienti cloud-native, ibridi e multipiattaforma. Questo salto di generazione va ben oltre un semplice aggiornamento: rappresenta un nuovo paradigma per l’automazione, la gestione remota e la compatibilità tra ambienti Windows, Linux e macOS.
PowerShell 7, sviluppato sulla base della più recente release di .NET, è in grado di convivere con Windows PowerShell 5.1, consentendo un’adozione progressiva e sicura senza compromettere ambienti produttivi esistenti.
Perché passare a PowerShell 7?
- Compatibilità avanzata con i moduli esistenti. PowerShell 7 amplia la compatibilità con i moduli di Windows PowerShell grazie alla funzione
UseWindowsPowerShell
, che permette di importare moduli non nativamente supportati sfruttando una sessione interna compatibile con la versione 5.1. Questo garantisce continuità operativa con Active Directory, Exchange, Office 365, Azure e altri strumenti. - Prestazioni migliorate. L’uso di .NET comporta un netto miglioramento delle prestazioni, soprattutto nei carichi concorrenti e nelle operazioni parallele. Grazie al supporto per
ForEach-Object -Parallel
, PowerShell 7 consente di eseguire flussi di lavoro altamente scalabili in modo nativo. - Remoting evoluto e multipiattaforma. PowerShell 7 supporta la comunicazione remota sia tramite WSMAN (Windows Remote Management) sia attraverso SSH, offrendo interoperabilità tra sistemi Windows, Linux e macOS. Questo aspetto è cruciale per gli ambienti IT moderni distribuiti.
- Supporto per container e ambienti DevOps. PowerShell 7 può essere utilizzato in contenitori Docker, semplificando l’integrazione in pipeline CI/CD e ambienti di sviluppo isolati. L’adozione in ambienti DevOps ne risulta naturale e conveniente.
Se sul vostro sistema utilizzaste PowerShell 5.1x, all’apertura della finestra del terminale vedrete comparire il messaggio seguente: “Installa la versione più recente di PowerShell per nuove funzionalità e miglioramenti“. Per procedere con l’installazione di PowerShell 7, si può fare riferimento alla pagina Installazione di PowerShell in Windows: qui trovate i link per il download diretto della versione stabile, della versione LTS (Supporto a lungo termine) e della release di anteprima.