Codice PowerShell: guida pratica e esempi utili

Introduzione

PowerShell è una shell da riga di comando e un linguaggio di scripting sviluppato da Microsoft per l’automazione delle attività di amministrazione dei sistemi. Basato sul framework .NET, PowerShell consente di gestire Windows, Active Directory, Exchange, Azure e molti altri componenti in modo efficiente attraverso l’uso di comandi chiamati cmdlet. In questa guida pratica esploreremo i concetti fondamentali, i comandi più utili e alcuni esempi concreti per iniziare a scrivere codice PowerShell.

Cos’è PowerShell

PowerShell nasce nel 2003 con il nome in codice Monad e viene rilasciato ufficialmente nel 2006. Nel 2016 Microsoft lo ha reso open source con licenza MIT, dando vita a PowerShell Core, disponibile anche su Linux e macOS. A differenza delle shell tradizionali che lavorano con testo, PowerShell opera con oggetti .NET. Ogni cmdlet restituisce oggetti che possono essere ulteriormente elaborati, filtrati o esportati. Questo approccio orientato agli oggetti rende la shell estremamente potente per attività complesse di amministrazione.

Comandi fondamentali

I cmdlet seguono la convenzione Verbo-Nome: il verbo indica l’azione da compiere (Get, Set, New, Remove) e il nome specifica l’oggetto su cui operare (Process, Service, EventLog). La documentazione integrata è facilmente accessibile con il cmdlet Get-Help. Ecco una lista dei cmdlet più comuni per chi si avvicina a PowerShell:

Get-Help: visualizza la guida di un cmdlet.
Get-Process: elenca tutti i processi in esecuzione.
Get-Service: ottiene lo stato dei servizi di Windows.
Set-Location: cambia la directory di lavoro corrente (equivalente di cd).
Get-EventLog: legge i log eventi del sistema.
Get-ADUser: interroga gli utenti di Active Directory (richiede il modulo ActiveDirectory).
Set-ExecutionPolicy: configura le policy di esecuzione degli script.

L’uso di alias come `ls` per `Get-ChildItem` o `dir` per lo stesso comando facilita la transizione dagli ambienti Unix.

Codice PowerShell: guida pratica e esempi utili - 1

La pipeline e gli oggetti

Uno degli aspetti più rivoluzionari di PowerShell è la pipeline. Mentre nelle shell tradizionali i comandi passano testo tra di loro, qui passano oggetti. Questo significa che un cmdlet come `Get-Process` produce una collezione di oggetti Process, che possono essere filtrati con `Where-Object`, selezionati con `Select-Object` o esportati con `Export-Csv`. Ad esempio:

Get-Process | Where-Object { $_.CPU -gt 10 } | Select-Object Name, CPU

Questo comando restituisce i nomi e l’utilizzo della CPU dei processi con carico superiore a 10. La gestione degli oggetti elimina la necessità di parsing complessi, riducendo errori e aumentando la leggibilità degli script.

Scripting con PowerShell

PowerShell supporta tutte le strutture tipiche di un linguaggio di programmazione: variabili (precedute da $), operatori, cicli for, foreach, while e controlli condizionali con if/else e switch. È anche possibile definire funzioni e moduli per riutilizzare il codice. Le variabili possono contenere qualsiasi tipo di oggetto .NET.

Un esempio classico di scripting per l’amministrazione di Active Directory è il recupero degli utenti creati negli ultimi sette giorni. Il codice PowerShell necessario è semplice e leggibile:

Codice PowerShell: guida pratica e esempi utili - 2

$Fecha = (Get-Date).AddDays(-7)

Get-ADUser -Filter {whenCreated -ge $Fecha} -Properties Name,Enabled,whenCreated

Qui si calcola la data di sette giorni fa e si filtrano gli utenti la cui proprietà whenCreated è maggiore o uguale a tale data. Il cmdlet Get-ADUser restituisce oggetti che possono essere ulteriormente elaborati, ad esempio per generare un report in CSV.

Politiche di esecuzione e sicurezza

Per prevenire l’esecuzione accidentale di script dannosi, PowerShell utilizza le Execution Policies (politiche di esecuzione). Queste non sono barriere di sicurezza in senso stretto, ma limitano l’esecuzione di script in base alla provenienza e alla firma digitale. Le principali politiche sono quattro:

Restricted: nessuno script può essere eseguito (impostazione predefinita su Windows client).
RemoteSigned: gli script scaricati da internet devono essere firmati da un editore attendibile, mentre quelli locali possono essere eseguiti liberamente.
AllSigned: tutti gli script, anche locali, devono essere firmati.
Unrestricted: tutti gli script possono essere eseguiti, con un avviso per quelli scaricati da internet.

Codice PowerShell: guida pratica e esempi utili - 3

Per visualizzare o impostare la politica corrente si usa il cmdlet `Get-ExecutionPolicy` o `Set-ExecutionPolicy`. Ad esempio, per abilitare l’esecuzione di script locali: `Set-ExecutionPolicy RemoteSigned`. È importante valutare attentamente i rischi prima di abbassare le restrizioni. Maggiori informazioni sulla gestione delle politiche sono disponibili nella documentazione ufficiale di PowerShell su Microsoft Learn.

Esempi pratici

Vediamo ora alcuni scenari quotidiani in cui PowerShell semplifica il lavoro dell’amministratore. Il primo esempio riguarda il monitoraggio dei servizi. Per elencare i servizi in esecuzione e il loro stato si usa:

Get-Service | Where-Object { $_.Status -eq 'Running' } | Select-Object Name, Status

Per fermare un servizio specifico: `Stop-Service -Name Spooler` (attenzione ai permessi di amministratore).

Un altro caso frequente è la gestione dei processi. Per terminare un processo che non risponde: `Stop-Process -Name notepad -Force`. Per conoscere i primi dieci processi per utilizzo di memoria:

Codice PowerShell: guida pratica e esempi utili - 4

Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10

Infine, per l’automazione delle attività di rete, PowerShell offre cmdlet come `Test-Connection` (equivalente di ping) e `Get-NetIPAddress`. Una lista completa dei cmdlet più usati è disponibile nel portale IONOS dedicato ai comandi PowerShell.

Vantaggi e limiti

PowerShell è uno strumento flessibile e integrato nel mondo Windows, ma richiede una curva di apprendimento per chi proviene da shell testuali tradizionali. La gestione degli oggetti può inizialmente sembrare astratta, ma una volta compresa, permette di scrivere script più puliti e potenti. Inoltre, la compatibilità tra PowerShell 5.1 (Windows) e PowerShell 7 (cross‑platform) si è ampliata, anche permangono alcune differenze nei moduli disponibili.

Riferimenti

Le informazioni presentate in questo articolo sono basate su fonti ufficiali e guide autorevoli. Per approfondire:

Microsoft Learn – Panoramica di PowerShell: https://learn.microsoft.com/es-es/powershell/. Pagina ufficiale che descrive il framework, le cmdlet e le best practice.

Codice PowerShell: guida pratica e esempi utili - 5

Microsoft Learn – Specifiche del linguaggio di scripting: https://learn.microsoft.com/es-es/powershell/scripting/lang-spec/. Documentazione tecnica su sintassi, variabili e strutture di controllo.

IONOS – I 40 cmdlet PowerShell più importanti: https://www.ionos.es/digitalguide/servidores/configuracion/comandos-de-powershell/. Guida pratica con esempi e spiegazioni.

Wikipedia – PowerShell: https://es.wikipedia.org/wiki/PowerShell. Voce enciclopedica con storia, caratteristiche e confronti.

Microsoft Learn – Cmdlet per Active Directory: https://learn.microsoft.com/es-es/powershell/module/activedirectory/. Riferimento ai comandi per gestire AD.

GitHub – Repository ufficiale di PowerShell: https://github.com/PowerShell/PowerShell. Codice sorgente, documentazione e community.

PowerShell codice script comandi Windows automatizzazione guida esempi
Avviso Contenuto informativo. Verifica sempre i comandi prima di eseguirli nel tuo ambiente.
Autore

Stefano Barcellos

Collaboratore di Visite Barbados.

« Articolo precedente
Tastiera: guida, consigli e migliori modelli

Articoli correlati