Logo NEXSYS menu
ISO 9001

Nexsys Srl è certificata
ISO 9001:2015

Microsoft Solutions Partner

Siamo Microsoft Solution Partner per il Modern Work

APPROFONDIMENTI E NEWS

Cos’è PowerShell e a cosa serve: guida per amministratori IT

PowerShell è la piattaforma di automazione e amministrazione sviluppata da Microsoft. Combina una shell a riga di comando, un linguaggio di scripting e un sistema estendibile di moduli. Consente di gestire computer, server, identità, servizi cloud e configurazioni in modo ripetibile, lavorando su oggetti strutturati anziché limitarsi a elaborare testo.

Per un amministratore IT significa poter sostituire attività manuali e procedure non documentate con comandi verificabili, script versionati e processi eseguibili su uno o più sistemi. PowerShell è disponibile su Windows, Linux e macOS; negli ambienti Microsoft rimane uno degli strumenti centrali per l’amministrazione di Windows Server, Active Directory, Azure e Microsoft 365.

powershell - visual studio marketplace

In sintesi

PowerShell serve a interrogare, configurare e automatizzare sistemi e servizi. La differenza sostanziale rispetto a una shell tradizionale è la pipeline a oggetti: i comandi trasferiscono dati con proprietà e metodi, non soltanto righe di testo.

Che cos'è PowerShell?

PowerShell non è semplicemente un prompt dei comandi evoluto. È un ambiente di gestione basato su .NET, progettato per esporre le funzioni amministrative tramite comandi coerenti e componibili. La stessa logica può essere usata in una sessione interattiva, inserita in uno script con estensione .ps1 oppure organizzata in funzioni e moduli riutilizzabili.

La sintassi dei comandi principali segue la convenzione Verbo-Sostantivo. Esempi come Get-Service, Get-Process, Set-Item e Restart-Computer indicano chiaramente l’azione e la risorsa interessata. Il comando Get-Command permette di individuare le operazioni disponibili, mentre Get-Help mostra sintassi, parametri ed esempi direttamente dalla console.

Get-Command -Verb Get

Get-Help Get-Service -Examples

A cosa serve PowerShell

PowerShell viene utilizzato quando un’attività deve essere ripetibile, scalabile o controllabile. È utile sia per singole verifiche sia per procedure che coinvolgono centinaia di utenti, dispositivi o risorse cloud.

1. Windows Server

Inventario dei ruoli, gestione dei servizi, analisi degli eventi, configurazione remota e attività operative. Le competenze possono essere integrate con un percorso di amministrazione di Windows Server.

2. Active Directory

Ricerca e provisioning degli account, gestione dei gruppi, verifica degli attributi e produzione di report.

3. Microsoft 365

Amministrazione automatizzata di utenti, licenze e servizi attraverso i moduli supportati. Per la gestione quotidiana del tenant resta utile conoscere anche il Microsoft 365 Admin Center.

4. Cloud e ambienti ibridi

Gestione di risorse Azure, integrazione con API, job pianificati e procedure di configurazione.

5. Monitoraggio e reporting

Raccolta di eventi e metriche, normalizzazione dei dati ed esportazione in CSV, JSON o XML.

6. Troubleshooting e manutenzione

Test di connettività, verifica dei servizi, analisi dei log e automazione delle attività di patching.

Come funziona PowerShell

FondazioneI Cmdlet

I cmdlet sono comandi specializzati che eseguono un’operazione specifica. Possono ricevere parametri, restituire oggetti e accettare input dalla pipeline. La nomenclatura coerente riduce l’ambiguità e rende più semplice esplorare nuove aree amministrative.

Get-Service -Name WinRM

ArchitetturaOggetti e pipeline

Nelle shell tradizionali l’output viene spesso trattato come testo da analizzare. PowerShell trasferisce invece oggetti .NET. Un oggetto restituito da Get-Service contiene proprietà come Name, Status e StartType; i comandi successivi possono filtrare o selezionare queste proprietà senza dover interpretare colonne testuali.

Get-Service |
    Where-Object Status -eq 'Running' |
    Sort-Object DisplayName |
    Select-Object Name, DisplayName, Status

L’operatore | collega i comandi. Ogni passaggio riceve l’output del precedente, lo elabora e produce nuovi oggetti. Questa composizione consente di costruire procedure leggibili partendo da operazioni semplici.

OrganizzazioneScript, funzioni e moduli

Uno script raccoglie più istruzioni in un file .ps1. Le funzioni incapsulano una logica riutilizzabile; i moduli organizzano funzioni, cmdlet e risorse correlate, semplificando distribuzione e versionamento. Per esempi di estensioni operative è disponibile l’approfondimento sui moduli PowerShell per l’amministrazione.

Windows PowerShell 5.1 e PowerShell 7: cosa cambia

Windows PowerShell 5.1 è il componente storico incluso in Windows e basato su .NET Framework. PowerShell 7 è il ramo moderno, open source e multipiattaforma, basato su .NET. I due runtime possono essere installati ed eseguiti in parallelo: powershell.exe avvia Windows PowerShell 5.1, mentre pwsh.exe avvia PowerShell 7.

AspettoWindows PowerShell 5.1PowerShell 7
Base tecnologica.NET Framework.NET moderno
PiattaformeWindowsWindows, Linux e macOS
Eseguibilepowershell.exepwsh.exe
Uso tipicoCompatibilità con moduli e procedure legacyNuovi script, cloud, automazione multipiattaforma
Coesistenza

La scelta non va trattata come una sostituzione automatica. Gli script e i moduli critici devono essere testati perché alcune dipendenze Windows o basate su .NET Framework possono richiedere ancora Windows PowerShell 5.1. Per ciclo di vita, release supportate e percorso di aggiornamento consulta la guida a PowerShell 7.

Esempi pratici di PowerShell per amministratori IT

Gli esempi seguenti eseguono interrogazioni e verifiche. Prima di utilizzare comandi che modificano configurazioni o identità, è necessario validarli in un ambiente di test, definire l’ambito corretto e applicare il principio del minimo privilegio.

01Elencare i servizi in esecuzione

Il comando restituisce soltanto i servizi attivi e seleziona le proprietà utili per un controllo operativo o un report.

Get-Service |
    Where-Object Status -eq 'Running' |
    Select-Object Name, DisplayName

02Individuare gli utenti Active Directory abilitati

Get-ADUser appartiene al modulo ActiveDirectory e richiede i componenti amministrativi appropriati. L’approfondimento sul cmdlet Get-ADUser mostra come usarlo per interrogare gli account del dominio.

Get-ADUser -Filter * -Properties Enabled |
    Where-Object Enabled -eq $true |
    Select-Object Name, SamAccountName

03Verificare una porta TCP

Test-NetConnection verifica risoluzione, raggiungibilità e apertura della porta indicata. Per scenari di diagnostica è disponibile la guida su come testare porte TCP con PowerShell.

Test-NetConnection -ComputerName server01.contoso.local -Port 443

04Leggere gli errori recenti dal registro System

Il filtro viene applicato durante la query e limita il risultato agli eventi di livello errore. L’output può essere ulteriormente filtrato, aggregato o esportato.

Get-WinEvent -FilterHashtable @{ LogName = 'System'; Level = 2 } -MaxEvents 20 |
    Select-Object TimeCreated, Id, ProviderName, Message

05Controllare le execution policy effettive

Il comando mostra i criteri definiti nei diversi scope e consente di identificare quale impostazione prevale nella sessione. L’execution policy riduce le esecuzioni accidentali, ma non deve essere considerata un confine di sicurezza.

Get-ExecutionPolicy -List

06Automazione degli aggiornamenti Windows

PowerShell può integrare processi di inventario e patching, ma il metodo dipende dalla piattaforma di gestione, dai criteri aziendali e dai moduli adottati. L’articolo sui metodi per automatizzare Windows Update con PowerShell descrive uno scenario basato sul modulo PSWindowsUpdate. In produzione vanno verificati supporto, repository, firma del modulo, logging e strategia di rollback.

Perché PowerShell è utile in azienda

Ripetibilità

La stessa procedura produce risultati coerenti e riduce le variazioni introdotte da attività manuali.

Scalabilità

Una logica validata può essere applicata a insiemi di utenti, computer o risorse.

Tracciabilità

Script, parametri, output e log permettono di ricostruire cosa è stato eseguito.

Integrazione

Moduli, API REST e formati come CSV e JSON collegano sistemi differenti.

Standardizzazione

Le procedure operative diventano codice revisionabile, testabile e versionabile.

Riduzione del rischio operativo

Controlli preliminari, gestione degli errori e modalità di simulazione riducono gli interventi non intenzionali.

Come iniziare a usare PowerShell in modo corretto

Verifica il runtime

Usa $PSVersionTable per distinguere Windows PowerShell 5.1 da PowerShell 7 e documentare la versione prevista dagli script.

Impara l’esplorazione nativa

Get-Command, Get-Help e Get-Member permettono di individuare comandi, parametri, esempi e proprietà degli oggetti.

Parti da operazioni di sola lettura

Interrogazioni, inventari e report consentono di comprendere la pipeline senza introdurre modifiche.

Trasforma i comandi in script controllati

Aggiungi parametri, validazione degli input, gestione degli errori, log e commenti utili.

Versiona e testa

Conserva gli script in un repository, applica code review e usa test automatici per le funzioni critiche.

Distribuisci con governance

Definisci identità di esecuzione, segreti, privilegi, pianificazione, monitoraggio e rollback.

PowerShell e sicurezza: controlli essenziali

PowerShell è uno strumento amministrativo potente e, proprio per questo, deve essere gestito come una componente privilegiata dell’infrastruttura. Bloccare genericamente PowerShell non sostituisce una strategia di sicurezza: gli amministratori devono poterlo usare in modo controllato, mentre le esecuzioni anomale devono essere limitate e rilevate.

Minimo privilegio e identità dedicate

Separare gli account amministrativi e assegnare solo i permessi necessari al task.

Firma e provenienza degli script

Validare autore, repository, dipendenze e integrità prima della distribuzione.

Gestione dei segreti

Non inserire password, token o chiavi in chiaro nel codice, nei parametri o nei log.

Logging

Abilitare e centralizzare module logging, script block logging e trascrizione dove appropriato.

Controllo applicativo

Usare criteri di application control per limitare codice e moduli non autorizzati.

Test e rollback

Validare gli script in ambienti separati, usare -WhatIf quando supportato e definire il ripristino.

Punto critico

Set-ExecutionPolicy non impedisce a un utente autorizzato di eseguire codice. È un controllo contro violazioni involontarie, non un meccanismo di contenimento. La protezione effettiva richiede identità, privilegi, application control, logging, protezione endpoint e monitoraggio.

Domande frequenti su PowerShell

PowerShell e Prompt dei comandi sono la stessa cosa?

No. Il Prompt dei comandi esegue comandi e programmi principalmente attraverso testo. PowerShell integra shell, linguaggio di scripting e automazione basata su oggetti .NET, con pipeline, moduli e accesso strutturato alle risorse.

PowerShell funziona solo su Windows?

No. PowerShell 7 è multipiattaforma e può essere eseguito su Windows, Linux e macOS. La disponibilità dei cmdlet dipende comunque dal sistema operativo e dai moduli installati.

Qual è la differenza tra Windows PowerShell 5.1 e PowerShell 7?

Windows PowerShell 5.1 è basato su .NET Framework ed è integrato in Windows. PowerShell 7 usa .NET moderno, è multipiattaforma e viene installato separatamente. I due runtime possono coesistere.

Come verificare la versione di PowerShell?

Esegui $PSVersionTable.PSVersion. Il risultato mostra major, minor e build del runtime corrente. Il comando Get-Host può mostrare la versione dell’host, ma $PSVersionTable è il riferimento più diretto per la versione di PowerShell.

Che cos’è un cmdlet PowerShell?

È un comando specializzato con nomenclatura Verbo-Sostantivo, progettato per ricevere parametri, produrre oggetti e integrarsi nella pipeline. Get-Service e Get-Process sono esempi di cmdlet.

PowerShell è pericoloso?

Non in sé. È uno strumento amministrativo che può eseguire operazioni ad alto impatto se usato con privilegi elevati o script non verificati. Il rischio va gestito con minimo privilegio, controllo del codice, logging, protezione endpoint e monitoraggio.

Serve saper programmare per usare PowerShell?

Non per iniziare con comandi e pipeline semplici. Per creare automazioni affidabili servono però competenze su variabili, funzioni, gestione degli errori, test, sicurezza e versionamento.

Formazione PowerShell per amministratori e team IT

L’efficacia di PowerShell dipende meno dalla quantità di comandi memorizzati e più dalla capacità di progettare automazioni leggibili, sicure e mantenibili. Nexsys propone il corso PowerShell Fundamentals e PowerShell Secure Scripting, con attività pratiche su pipeline, funzioni, script, moduli, debugging, accesso remoto e controlli di sicurezza.

Il percorso può essere integrato con gli altri corsi per sistemisti dedicati a Windows Server, Active Directory, Microsoft 365 e Azure, costruendo un piano coerente con le tecnologie realmente amministrate dal team.

Per definire un percorso personalizzato su automazione, amministrazione e secure scripting, contatta Nexsys.