Testo in ingresso, testo in uscita: il limite che ha rotto mille file batch
cmd è una shell testuale: dir stampa colonne formattate, e tutto ciò che volevate davvero — una dimensione, una data, un nome — arriva come caratteri incollati a una pagina che poi va ritagliata. Gli script costruiti su quel parsing crollano il giorno in cui una lingua scrive un mese diversamente, una colonna si allarga o un nome file contiene uno spazio. Chi ha mantenuto file batch ricorda il rituale: FOR /F con token e delimitatori, una preghiera silenziosa e una seconda versione per le macchine che rispondono in un'altra lingua.
PowerShell, distribuito nel 2006 e costruito su .NET, è nato esattamente per chiudere quella storia. Get-ChildItem non stampa righe: restituisce oggetti FileInfo che portano Name, Length, LastWriteTime ed Extension come dati. La pipeline tra comandi passa quegli oggetti interi, quindi un filtro scritto a Roma gira identico a Monaco, e una somma è un numero che si può arrotondare e formattare, non una stringa da prendere sulla fiducia.
Cmdlet verbo-sostantivo che si compongono come devono comporsi gli strumenti di pulizia
I comandi sono cmdlet con nome Verbo-Sostantivo — Get-ChildItem, Where-Object, Measure-Object, Remove-Item — e la disciplina non è cosmetica: i verbi approvati tengono leggibile una pipeline anche sei mesi dopo, come una cassetta etichettata batte un cassetto di cacciaviti misteriosi. Per le pulizie conta la composizione più del singolo comando: trovare, filtrare, misurare, eliminare è una riga di flusso di oggetti invece di quattro paragrafi di sintassi batch. Ogni fase si nomina da sé, quindi un one-liner scritto di fretta si legge ancora come una frase un mese dopo.
Il vantaggio più silenzioso è la sicurezza. Remove-Item accetta -WhatIf, che stampa ogni eliminazione che eseguirebbe — e poi non ne esegue nessuna — e -Confirm, che chiede conferma file per file: prove a secco che cmd non ha mai avuto. Get-AppxPackage passa dritto in Remove-AppxPackage, così rimuovere un'app preinstallata è una pipeline anziché una caccia nel registro. Non rende l'eliminazione innocua, la rende ispezionabile — ed è la proprietà che è sempre mancata agli script di pulizia.
- Get-ChildItem $env:TEMP -Recurse — un oggetto FileInfo per file, con Length e LastWriteTime come dati
- Where-Object Length -gt 100MB — un filtro su oggetti, immune a lingua e larghezza delle colonne
- Measure-Object Length -Sum — il totale in gigabyte come numero, non una stringa da ri-parsare
- Remove-Item ... -WhatIf — una prova a secco che elenca ogni eliminazione che eseguirebbe
- Get-AppxPackage *zune* | Remove-AppxPackage — rimozione dell'appx in un'unica pipeline
Dove vince ancora cmd, e i limiti onesti
PowerShell non è gratis. Parte più lentamente di cmd, i criteri di esecuzione fermano i principianti che lanciano un .ps1 scaricato prima di Set-ExecutionPolicy -Scope CurrentUser RemoteSigned, e un Get-ChildItem ricorsivo su un intero disco striscia rispetto a scanner costruiti su misura. Per i classici — ipconfig, sfc, powercfg — cmd resta la finestra più leggera, e niente qui manda in pensione quei venti comandi.
L'altro limite onesto è la concorrenza: l'eliminazione gira su un solo thread, quindi un albero enorme di file piccoli dura quanto dura. Il bilancio resta chiaro. Per tutto ciò che misura, filtra o riporta prima di eliminare, PowerShell tratta il sistema come dati invece che come uno schermo da raschiare — e i one-liner del nostro post successivo non chiedono altro che copia-incolla.
Domande e risposte
PowerShell è meglio di cmd per pulire Windows?
Per tutto ciò che filtra, misura o prova le eliminazioni a secco, sì: le pipeline di oggetti sopravvivono a qualsiasi lingua e riportano prima di agire. Per i classici di rete e riparazione — ipconfig, sfc, chkdsk — cmd resta la finestra più leggera.
Che differenza c'è tra Windows PowerShell e PowerShell 7?
Windows PowerShell 5.1 arriva dentro il sistema su .NET Framework; PowerShell 7 è il successore multipiattaforma che si installa a parte. I one-liner di pulizia girano identici in entrambi.
Scopri cosa include la licenza prima dell'acquisto.
La prova singola di 30 minuti include gli strumenti essenziali. Le funzioni PRO restano bloccate finché non attivi una licenza a pagamento.
Da leggere dopo
Scrivici: [email protected]