Cos'è PowerShell? Una guida completa alle sue funzionalità e utilizzi
Feb 19, 2025
PowerShell è il framework di automazione multipiattaforma e linguaggio di scripting di Microsoft basato su .NET, che si è evoluto dalle origini esclusive per Windows in uno strumento open-source per Windows, macOS e Linux. Utilizza cmdlet, moduli, pipeline e output basato su oggetti per un'automazione potente. I team IT sfruttano PowerShell per la configurazione dei sistemi, la gestione del cloud, le pipeline DevOps e l'applicazione della sicurezza, rendendolo una piattaforma fondamentale per le operazioni IT moderne.
Introduzione a PowerShell
PowerShell è un interprete di comandi e linguaggio di scripting sviluppato da Microsoft. La versione originale, Windows PowerShell, funziona solo su Windows e non è più attivamente sviluppata; riceve solo correzioni di bug e aggiornamenti di sicurezza. La versione moderna è chiamata semplicemente PowerShell. Basato sul framework .NET, è open source e supporta più piattaforme, inclusi Windows, macOS e Linux.
Ecco un riassunto dell'evoluzione del prodotto:
- 2006: Windows PowerShell rilasciato.
- 2009: Windows PowerShell 2.0 ha introdotto le capacità di remoting.
- 2012: Windows PowerShell 3.0 ha migliorato le prestazioni e aggiunto nuove funzionalità del linguaggio.
- 2016: Microsoft ha reso open-source PowerShell e l'ha resa compatibile con diverse piattaforme.
- 2018: PowerShell Core 6.0 è stato rilasciato, segnando il passaggio a uno strumento multipiattaforma.
- 2020: PowerShell 7.0 è stato rilasciato, con l'obiettivo di sostituire sia Windows PowerShell che PowerShell Core.
Contenuto correlato selezionato:
Caratteristiche principali di PowerShell
PowerShell utilizza cmdlets (pronunciati “command-lets”), che sono classi .NET specializzate che implementano operazioni particolari. Supporta variabili, cicli e funzioni, così come funzionalità avanzate di scripting come la gestione degli errori e la convalida dei parametri.
A differenza dei tradizionali shell che producono output di testo, i comandi di PowerShell producono oggetti di dati strutturati. Questa architettura orientata agli oggetti consente manipolazione e analisi. Ad esempio, le proprietà e i metodi degli oggetti possono essere direttamente accessibili e gli oggetti possono essere passati tra comandi utilizzando pipe, con i tipi di dati preservati.
L'integrazione approfondita di PowerShell con .NET ti permette anche di:
- Usa qualsiasi classe .NET direttamente negli script
- Create and use custom .NET objects
- Interagisci con oggetti COM, WMI e altre tecnologie Windows
- Utilizza senza problemi le API e le funzioni .NET
Utilizzi pratici di PowerShell
Allora, per cosa si utilizza Windows PowerShell? Ecco alcune delle applicazioni più comuni.
Automazione dei compiti amministrativi
PowerShell può essere utilizzato per automatizzare molti compiti manuali noiosi che gli amministratori IT devono completare quotidianamente. Esempi includono:
- Gestione degli utenti
- Pianificazione degli aggiornamenti di sistema e dei backup
- Operazioni su file e cartelle
- Gestione delle regole del firewall e delle politiche di sicurezza
- Installazione e aggiornamenti del software
Gestione delle configurazioni di sistema
PowerShell rende semplice configurare le impostazioni di sistema, gestire i servizi e controllare le configurazioni di rete su più macchine contemporaneamente. Utilizzando PowerShell, gli amministratori Windows possono anche creare e modificare Group Policy objects (GPOs) e applicare modifiche al registro su più macchine.
Lavorare con i servizi Cloud (Azure, AWS e Google Cloud)
Le capacità di PowerShell non sono limitate ai dispositivi e ai server on-prem. PowerShell supporta attraverso moduli dedicati come Azure PowerShell, AWS Tools for PowerShell e Google Cloud SDK. Questo ti permette di eseguire il provisioning delle risorse, automatizzare i flussi di lavoro nel cloud, monitorare l'infrastruttura cloud e molto altro.
Concetti chiave e terminologia
Cmdlet
I cmdlet sono il tipo di comando principale in PowerShell. Seguono una convenzione di denominazione verbo-sostantivo: il verbo specifica un'azione come Get, Set o Remove, mentre il sostantivo specifica l'oggetto dell'azione, come Process, Service o Item. Ad esempio:
- Get-Process recupera informazioni sui processi in esecuzione.
- Set-Variable assegna un valore a una variabile.
- New-Item crea un nuovo file o una nuova directory.
PowerShell Providers
I provider di PowerShell offrono un modo per accedere e gestire archivi dati come il file system, il registro e l'archivio dei certificati come se fossero un file system. Utilizza cmdlet familiari come Get-ChildItem e Set-Item.
Moduli PowerShell
I moduli sono pacchetti che contengono cmdlet di PowerShell, funzioni, flussi di lavoro e altre risorse. Estendono la funzionalità di PowerShell per compiti specifici o piattaforme come l'amministrazione di Active Directory o la gestione delle risorse di Azure. Possono essere facilmente importati utilizzando il cmdlet Import-Module.
Pipelines
La pipeline è una funzionalità potente in PowerShell che consente di utilizzare l'output di un comando come input per un altro. Si utilizza il simbolo della pipe (|) per passare oggetti tra i comandi. Ad esempio, il comando sottostante ottiene tutti i processi, filtra quelli con utilizzo della CPU superiore al 10%, li ordina per utilizzo della CPU e seleziona i primi 5:
Get-Process | Where-Object { $_.CPU -gt 10 } | Sort-Object CPU -Descending | Select-Object -First 5
Formati dei dati
PowerShell rende facile lavorare con formati di dati come JSON, XML e CSV, così puoi importare, esportare e manipolare dati strutturati. Questo rende PowerShell ideale per l'integrazione di API, la gestione di file di configurazione e il lavoro con tabelle di informazioni.
Iniziare con PowerShell
Installazione di PowerShell su Windows, macOS o Linux
Windows
Windows PowerShell 5.1 è preinstallato su Windows 10 e versioni successive. Se desideri PowerShell 7+, puoi scaricarlo dal repository ufficiale GitHub. In alternativa, puoi installarlo utilizzando WinGet, uno strumento da riga di comando incluso con Windows 11 e le versioni recenti di Windows 10, come segue:
winget install Microsoft.PowerShell
macOS
Per installare PowerShell su macOS, utilizza Homebrew come mostrato qui:
brew install --cask powershell
Linux
Per installare PowerShell su Linux, utilizzare un gestore di pacchetti come apt (per Debian/Ubuntu) o yum (per RHEL/CentOS).
Configurazione del tuo primo ambiente PowerShell
Per configurare l'ambiente PowerShell, segui i seguenti passaggi:
- Apri PowerShell. Su Windows, puoi trovarlo nel menu Start. Su macOS o Linux, inserisci il comando pwsh.
- Controlla la versione di PowerShell inserendo:
$PSVersionTable
- Forza le ultime capacità di gestione dei moduli inserendo:
Install-Module PowerShellGet -Force
Imparare le Basi: Sintassi, Alias e Completamento con Tab
Come accennato in precedenza, i cmdlet di Microsoft PowerShell utilizzano una struttura verbo-sostantivo (ad esempio, Get-Process, Set-Location). Tuttavia, in molti casi, non è necessario digitare il nome completo del cmdlet; invece, è possibile digitare un alias breve. Per visualizzare gli alias disponibili nella tua sessione PowerShell corrente, usa il cmdlet Get-Alias. Ecco alcuni esempi di alias:
- cat = Get-Content
- cd = Imposta-Posizione
- cls = Pulisci-Host
Inoltre, PowerShell dispone di una funzione di completamento automatico con il tasto tab — basta premere il tasto tab per completare automaticamente comandi, parametri e percorsi dei file.
PowerShell Integrated Scripting Environment (ISE) vs. Visual Studio Code
Microsoft offre diversi ambienti per lo sviluppo di script PowerShell. Il PowerShell ISE è uno strumento di sviluppo script integrato in Windows con evidenziazione della sintassi e debug di base. Visual Studio Code offre un ambiente di editing più robusto e multipiattaforma con capacità avanzate di scripting PowerShell, ampio supporto ai plugin e integrazione del controllo versione.
Anche se PowerShell ISE è sufficiente per compiti semplici, gli scripter professionisti spesso preferiscono la flessibilità e le caratteristiche complete di Visual Studio Code.
Funzionalità avanzate di PowerShell
Desired State Configuration (DSC): Configuration as Code
Desired State Configuration (DSC) è una funzionalità di PowerShell che gestisce le configurazioni di sistema attraverso file dichiarativi. Corregge automaticamente le deviazioni di configurazione, aiutando gli amministratori a mantenere impostazioni coerenti e a prevenire vulnerabilità di sicurezza in ambienti di grandi dimensioni.
Gestione remota con PowerShell Remoting
Puoi eseguire comandi PowerShell su sistemi remoti per gestire centralmente una flotta di macchine. Puoi connetterti a una singola macchina remota o a più macchine contemporaneamente.
Utilizzo di PowerShell per i CI/CD Pipelines
PowerShell è ampiamente utilizzato nei processi di integrazione continua e distribuzione continua (CI/CD) grazie alla sua versatilità e potenza. Gli script di PowerShell aiutano a razionalizzare i processi di consegna del software, migliorare la coerenza e ridurre gli errori di distribuzione. Le applicazioni principali includono:
- Automazione dei processi di build
- Esecuzione di test e generazione di rapporti
- Distribuzione di applicazioni e infrastrutture
Gestione degli errori e debug negli script
PowerShell include cmdlet per la gestione degli errori e il debugging come:
- Set-PSBreakpoint per impostare i breakpoint
- Step-Into e Step-Over per l'esecuzione riga per riga
- $Error variabile per il tracciamento dei dettagli degli errori
Inoltre, il parametro -ErrorAction consente agli amministratori di specificare le risposte agli errori degli script e i blocchi try-catch-finally offrono una gestione completa delle eccezioni e un recupero degli errori armonioso.
PowerShell in Action
Gestione di sistemi Windows e Linux
PowerShell è ora uno strumento di automazione multipiattaforma che continua a offrire un'integrazione profonda con i sistemi Windows. Gli amministratori possono utilizzare PowerShell per gestire molti aspetti del sistema operativo da una singola postazione. Può essere utilizzato anche per interagire con file, processi e servizi sui sistemi Linux.
Configurazione delle impostazioni di rete e della sicurezza
Gli amministratori spesso utilizzano PowerShell per configurare e proteggere gli ambienti di rete. Le funzionalità principali includono:
- Configurazione della rete — Automatizza le impostazioni IP, le configurazioni DNS, le tabelle di instradamento e le impostazioni VLAN.
- Firewall e politiche di sicurezza — Gestisci le regole del firewall di Windows Defender, i baseline di sicurezza e le liste di controllo degli accessi (ACL).
- Diagnostica di rete — Automatizza test di connettività, latenza e perdita di pacchetti utilizzando cmdlet come Test-Connection e Test-NetConnection.
Automazione della gestione del database con i Cmdlet di SQL Server
Il modulo SQL Server di PowerShell consente una gestione completa degli ambienti SQL Server, inclusi i seguenti:
- Manutenzione del database — Automatizza i backup, i ripristini e i controlli di coerenza.
- Automazione delle query — Esegui script T-SQL, esporta/importa dati e monitora le prestazioni del database.
- Gestione degli utenti — Gestire accessi, permessi e ruoli di sicurezza.
Esplorazione delle integrazioni di terze parti: VMWare, AWS e Docker
PowerShell ora si integra con molteplici piattaforme di terze parti. Esempi includono i seguenti:
- VMware vSphere — Utilizza PowerCLI per automatizzare il deployment delle VM, la gestione degli snapshot e il monitoraggio delle risorse.
- Amazon Web Services (AWS) — Utilizza il modulo AWS Tools for PowerShell per scriptare istanze EC2, bucket S3, policy IAM e altro.
- Docker — Utilizza il modulo PowerShell Docker per gestire immagini dei container, distribuzioni e configurazioni di rete.
PowerShell per gli sviluppatori
Creazione e utilizzo di Cmdlet personalizzati
I cmdlet personalizzati consentono agli sviluppatori di estendere la funzionalità di PowerShell per soddisfare esigenze specifiche. È possibile definire una classe cmdlet per gestire logiche aziendali uniche o compiti di codifica ripetitivi.
Costruzione di moduli per la riusabilità
I moduli impacchettano funzioni, cmdlet e script di PowerShell in librerie riutilizzabili che possono essere utilizzate in qualsiasi momento. Moduli ben progettati migliorano l'organizzazione del codice e consentono la condivisione di funzionalità comuni tra più progetti e team.
Integrazione con GitHub e Controllo di Versione
Il controllo delle versioni è importante quando si tratta di gestire script e moduli PowerShell e l'integrazione con GitHub può migliorare questo processo offrendo una suite completa di strumenti per attività come il tracciamento delle modifiche, la gestione delle diverse versioni e il mantenimento di una cronologia dei tuoi progetti PowerShell.
Scripting per il deployment delle applicazioni
Utilizza PowerShell per automatizzare le distribuzioni di applicazioni complesse sia on premises che nel cloud. Creando e utilizzando script di installazione, puoi ridurre gli errori manuali, accelerare i cicli di distribuzione e garantire ambienti coerenti.
Comunità e Risorse
Documentazione ufficiale di PowerShell e tutorial
La documentazione di PowerShell di Microsoft è la risorsa autorevole per apprendere e padroneggiare PowerShell. Offre una ricchezza di informazioni, come:
- Guide per iniziare
- Riferimenti ai cmdlet
- Tutorial sulla scrittura di script
- Migliori pratiche e guide di stile
Forum della Comunità Attiva: Reddit, Discord e GitHub
Una vasta comunità di PowerShell offre discussioni attive su un numero infinito di argomenti. Tre comunità online popolari sono:
- Reddit — Con la sua vasta base di iscritti, Reddit è un ottimo luogo sia per principianti che per utenti esperti per condividere script, fare domande e discutere le migliori pratiche.
- Discord — Il server Discord di PowerShell ospita migliaia di utenti che partecipano a chat e collaborazioni in tempo reale. Dispone di canali dedicati per l'assistenza, le notizie e persino discussioni specifiche per lingua.
- GitHub — Questo repository centrale è un luogo dove puoi contribuire a progetti open-source di PowerShell, revisionare il codice e collaborare con la comunità globale degli sviluppatori.
Migliori pratiche per scrivere e condividere script
Man mano che il tuo utilizzo di PowerShell aumenta, seguire le migliori pratiche avrà un ruolo importante nella creazione di codice pulito, efficiente e sicuro che sia efficace per la collaborazione condivisa. Alcune raccomandazioni chiave includono quanto segue:
- Usa nomi di variabili e funzioni descrittivi.
- Implementare un corretto gestione degli errori e registrazione.
- Segui una formattazione e un'indentazione coerenti negli script.
- Evitare l'uso di alias negli script per migliorare la leggibilità.
PowerShell Gallery per soluzioni pre-costruite
La PowerShell Gallery è un repository di moduli e script che sono stati testati e perfezionati. Tuttavia, prima di distribuire qualsiasi codice condiviso, dovresti convalidarne la fonte e esaminarlo per la sicurezza e la conformità.
Il futuro di PowerShell
Aggiornamenti e funzionalità recenti in PowerShell 7+
PowerShell ha fatto molta strada dalla sua nascita, evolvendosi da uno strumento centrato su Windows a una potente soluzione di automazione cross-platform. PowerShell 7, rilasciato nel marzo 2020, ha segnato una tappa significativa in questa evoluzione. Basato su .NET Core, ha portato compatibilità cross-platform e miglioramenti delle prestazioni. Le funzionalità includevano l'esecuzione parallela per l'elaborazione simultanea, una gestione degli errori migliorata e supporto completo per Linux e macOS.
PowerShell come standard multipiattaforma
La transizione di PowerShell a uno strumento cross-platform ha portato alcuni vantaggi chiave per gli utenti di PowerShell, tra cui:
- Sintassi coerente tra Windows, macOS e Linux
- Capacità di gestire risorse cloud da qualsiasi piattaforma
- Crescente adozione delle pratiche DevOps e dei pipeline CI/CD
Previsioni per le tendenze di Automazione e Configuration Management
È quasi certo che in futuro vedremo l'integrazione di PowerShell con l'intelligenza artificiale e l'apprendimento automatico. Questa integrazione porterà ad una automazione più intelligente, alla presa di decisioni guidata dall'AI, all'analisi predittiva e agli script auto-riparanti.
Possiamo anche aspettarci l'integrazione con strumenti come Terraform e Ansible, abilitando strategie di automazione ibride dichiarative-imperative. Un'altra scommessa sicura è che ci saranno aggiornamenti che forniranno funzionalità di sicurezza migliorate per affrontare le preoccupazioni moderne sulla cybersecurity.
Conclusione
Se sei un professionista IT che non ha ancora utilizzato PowerShell, provaci — scoprirai rapidamente che è uno strumento essenziale. Con le sue capacità cross-platform e l'integrazione profonda con sistemi cloud e on-premises, PowerShell consente ai team IT di semplificare le operazioni, migliorare la sicurezza e automatizzare compiti complessi con facilità.
FAQ
A cosa serve PowerShell?
PowerShell è un ambiente di shell a riga di comando e una piattaforma di scripting per l'automazione e la gestione dei sistemi. I professionisti IT lo utilizzano per gestire elementi come:
- Configurazione e manutenzione del sistema
- Infrastrutture cloud come Azure e AWS
- Impostazioni della rete
- Distribuzione dell'applicazione
- Elaborazione dei dati e reporting
- Compiti di sicurezza e conformità
PowerShell è uguale a Python?
No. Anche se entrambi sono linguaggi di scripting, PowerShell è progettato per l'amministrazione di sistema e l'automazione per Windows e infrastrutture cloud. Python è un linguaggio di programmazione di uso generale utilizzato per lo sviluppo web, la scienza dei dati, l'intelligenza artificiale e lo sviluppo software.
Come faccio a eseguire PowerShell?
Ci sono diversi modi per avviare PowerShell su Windows, inclusi i seguenti:
- Premi Win + R, digita powershell e premi Invio.
- Cerca PowerShell nel menu Start e cliccaci sopra.
È facile imparare PowerShell?
Sì, specialmente per coloro che sono familiari con gli strumenti a riga di comando o scripting. La sua sintassi intuitiva verbo-nome (ad esempio, Get-Process, Set-Item) rende i cmdlet facili da comprendere. I principianti possono iniziare con compiti di base come la gestione dei file e gradualmente avanzare nella creazione di script per automatizzare cose come l'amministrazione del sistema. Inoltre, una documentazione estesa, tutorial e una forte comunità rendono l'apprendimento accessibile.
È consentito disabilitare Windows PowerShell?
La risposta a questa domanda può dipendere da chi la poni. Molti professionisti della sicurezza raccomandano di disabilitare PowerShell per gli utenti non tecnici che non ne hanno bisogno per il loro lavoro. Tuttavia, il personale IT potrebbe aver bisogno di PowerShell per attività come la manutenzione del sistema e la risoluzione dei problemi.
Se si sceglie di disabilitare PowerShell, farlo con cautela, poiché potrebbe impedire l'esecuzione corretta di importanti aggiornamenti di sistema e compiti amministrativi. Un approccio migliore potrebbe essere quello di utilizzare politiche di sicurezza per controllare l'esecuzione e l'accesso a PowerShell.
PowerShell è la stessa cosa del prompt dei comandi?
Non è così. Sebbene entrambi siano interfacce a riga di comando, PowerShell è molto più avanzato, con capacità di scripting, strumenti di automazione e la possibilità di accedere al framework .NET e alle API di Windows. Inoltre, PowerShell funziona su più piattaforme mentre il prompt dei comandi è solo per Windows.
Condividi su
Scopri di più
Informazioni sull'autore
Jonathan Blackwell
Responsabile dello Sviluppo Software
Dal 2012, Jonathan Blackwell, ingegnere e innovatore, ha fornito una leadership ingegneristica che ha posizionato Netwrix GroupID all'avanguardia nella gestione di gruppi e utenti per ambienti Active Directory e Azure AD. La sua esperienza nello sviluppo, nel marketing e nelle vendite permette a Jonathan di comprendere appieno il mercato dell'Identity Management e il modo di pensare degli acquirenti.