Du texte en entrée, du texte en sortie : la limite qui casse les .bat
cmd est un shell textuel : dir imprime des colonnes mises en forme, et ce que vous cherchiez vraiment — une taille, une date, un nom — arrive en caractères collés à une page qu'il faut ensuite découper. Les scripts bâtis sur ce parsing cassent le jour où une langue écrit le mois autrement, où une colonne s'élargit ou où un nom de fichier contient une espace. Qui a maintenu des .bat se souvient du rituel : FOR /F avec tokens et délimiteurs, une petite prière, et une seconde version pour les machines qui répondent dans une autre langue.
PowerShell, paru en 2006 et bâti sur .NET, a été conçu pour en finir précisément avec ça. Get-ChildItem n'imprime pas des lignes : il renvoie des objets FileInfo portant Name, Length, LastWriteTime et Extension en tant que données. Le pipeline entre commandes transmet ces objets entiers, donc un filtre écrit à Paris tourne pareil à Munich, et une somme est un nombre qu'on peut arrondir et formater, pas une chaîne à qui il faut croire.
Des applets verbe-nom qui se composent proprement
Les commandes sont des applets nommées verbe-nom — Get-ChildItem, Where-Object, Measure-Object, Remove-Item — et la discipline n'est pas cosmétique : les verbes approuvés gardent un pipeline lisible six mois plus tard, comme une boîte à outils étiquetée bat un tiroir de tournevis anonymes. Pour le nettoyage, la composition compte plus que toute commande isolée : chercher, filtrer, mesurer, supprimer tient en une ligne de flux d'objets au lieu de quatre paragraphes de syntaxe batch. Chaque étape se nomme d'ailleurs elle-même, si bien qu'un one-liner écrit à la hâte se lit encore comme une phrase un mois plus tard.
La victoire la plus discrète est la sécurité. Remove-Item accepte -WhatIf, qui imprime chaque suppression qu'il ferait — puis n'en fait aucune — et -Confirm, qui demande fichier par fichier : des répétitions générales que cmd n'a jamais eues. Get-AppxPackage se pipe directement dans Remove-AppxPackage, si bien que retirer une application préinstallée est un pipeline, pas une chasse au Registre. Cela ne rend pas la suppression inoffensive, mais la rend vérifiable — la propriété qui manquait toujours aux scripts de nettoyage.
- Get-ChildItem $env:TEMP -Recurse — un objet FileInfo par fichier, avec Length et LastWriteTime en données
- Where-Object Length -gt 100MB — un filtre sur des objets, insensible à la langue et à la largeur des colonnes
- Measure-Object Length -Sum — le total en gigaoctets en nombre, pas en chaîne à reparser
- Remove-Item ... -WhatIf — une répétition générale qui liste chaque suppression qu'elle ferait
- Get-AppxPackage *zune* | Remove-AppxPackage — le retrait d'un appx en un seul pipeline
Là où cmd garde l'avantage — et les limites honnêtes
PowerShell n'est pas gratuit. Il démarre plus lentement que cmd, sa stratégie d'exécution bloque les nouveaux venus qui lancent un .ps1 téléchargé avant Set-ExecutionPolicy -Scope CurrentUser RemoteSigned, et un Get-ChildItem récursif sur tout un disque rampe à côté des scanneurs spécialisés. Pour les classiques — ipconfig, sfc, powercfg — cmd reste la fenêtre la plus légère, et rien ici ne retire ces vingt commandes.
L'autre limite honnête est la concurrence : la suppression tourne sur un seul thread, et une forêt de petits fichiers dure ce qu'elle dure. Le bilan reste clair. Pour tout ce qui mesure, filtre ou rend compte avant de supprimer, PowerShell traite votre système comme des données et non comme un écran à racler — et les one-liners de notre billet suivant ne demandent que du copier-coller.
Questions et réponses
PowerShell est-il meilleur que cmd pour nettoyer Windows ?
Pour tout ce qui filtre, mesure ou simule des suppressions, oui : les pipelines d'objets survivent à toute langue et rendent des comptes avant d'agir. Pour les classiques — ipconfig, sfc, chkdsk — cmd reste la fenêtre la plus légère.
Quelle est la différence entre Windows PowerShell et PowerShell 7 ?
Windows PowerShell 5.1 est livré dans le système sur .NET Framework ; PowerShell 7 est le successeur multiplateforme à installer séparément. Les one-liners de nettoyage tournent inchangés dans les deux.
Vérifiez le contenu avant l'achat.
L'essai unique de 30 minutes couvre les fonctions de base. Les fonctions marquées PRO restent verrouillées jusqu'à l'activation d'une licence payante.
À lire ensuite
Écrivez-nous: [email protected]