5 astuces PowerShell qui battent Bash sous Windows

/fr/images/windows-powershell-vs-powershell.jpg

Bash est indéniablement le shell incontournable pour de nombreux développeurs, en particulier ceux qui travaillent principalement sous Linux. Il est puissant, flexible et a été rigoureusement testé depuis des années. Cependant, sous Windows, PowerShell est devenu de plus en plus populaire en raison de ses fonctionnalités modernes, de sa facilité d’utilisation et de son intégration étroite avec le système d’exploitation.

Soyons clairs : je ne dis pas que PowerShell est meilleur que Bash dans toutes les situations, mais il est juste de dire que PowerShell a été spécialement conçu pour Windows, il parle donc mieux le langage du système d’exploitation Windows que tout autre shell, pas seulement Bash.

J’utilise ces deux shells depuis un certain temps et j’ai trouvé quelques astuces PowerShell qui surpassent systématiquement Bash en matière de gestion et d’automatisation du système Windows.

Travailler avec des objets au lieu du texte brut

La plus grande superpuissance de PowerShell

L’une des principales différences entre Bash et PowerShell réside dans la manière dont ils gèrent la sortie. Dans Bash, le résultat de chaque commande n’est que du texte. Si vous souhaitez extraire des informations utiles, vous devez généralement analyser le résultat via des outils tels que grep, awk ou cut. Cela signifie mémoriser les modèles et les manipulations de chaînes. Bien sûr, c’est faisable, mais cela peut vite devenir compliqué et difficile à entretenir.

PowerShell, contrairement à Bash, traite tout comme un objet et non comme du texte. Cela signifie que lorsque vous exécutez des commandes dessus, par exemple Get-Process, vous obtiendrez des données structurées que vous pourrez trier, filtrer et formater davantage, sans analyser les chaînes.

Par exemple, jetez un œil à cette commande : Get-Process | Où-Object CPU-gt 100 | Sélectionner le nom de l’objet, le processeur

L’exécution de cette commande dans PowerShell répertorie les processus de votre système qui utilisent plus de 100 unités CPU, ainsi que leurs noms et leur utilisation. Fondamentalement, pour trouver rapidement les processus à forte utilisation du processeur. Lors de l’exécution des commandes séparément, les données restent structurées tout au long du pipeline. C’est un énorme avantage lorsque vous devez créer des scripts pour des tâches complexes. Bash ne peut pas faire ça nativement.

Accéder à l’ensemble de l’écosystème Windows

Des ajustements du registre à la gestion du système

/fr/images/reading-windows-startup-registry-entry-using-powershell.jpg

Comme je l’ai mentionné plus tôt, PowerShell parle le plus efficacement la langue native du système d’exploitation Windows. Je voulais dire par là qu’il peut atteindre des composants au niveau du système tels que le registre, le planificateur de tâches, WMI (Windows Management Instrumentation), les processus en cours d’exécution et les services. Bash n’a pas d’accès intégré à ces éléments sous Windows.

Par exemple, disons que vous souhaitez voir quelles applications s’exécutent au démarrage de votre système. Dans PowerShell, vous pouvez le savoir en exécutant simplement cette commande : Get-ItemProperty-Path “HKCU:\Software\Microsoft\Windows\CurrentVersion\Run” Vous interrogez directement le registre via cette commande. Vous pouvez en outre écrire des scripts pour désactiver, supprimer ou modifier les clés de registre avec la même simplicité. Non seulement cela, vous pouvez également démarrer ou arrêter les services exécutés sous Windows avec des commandes simples telles que : Start-Service-Name wuauserv

Une telle intégration est très précieuse pour les administrateurs système car elle élimine le besoin d’outils GUI distincts ou de scripts C# personnalisés.

Automatisation des tâches avec des applets de commande et des modules

Commandes réutilisables conçues pour Windows

/fr/images/installing-module-to-manage-windows-updates-from-powershell.jpg

Un autre domaine dans lequel PowerShell domine Bash, et l’une de mes choses préférées à propos de PowerShell, est l’utilisation d’applets de commande. Il s’agit de petites commandes spécialement conçues qui suivent le modèle verbe-nom facilement compréhensible, telles que Get-Process, Start-Service et Remove-Item. Ceux-ci sont descriptifs et facilement prévisibles quant à leur destination.

Dans Bash, vous devez mémoriser une syntaxe complètement différente pour chaque outil. De plus, PowerShell prend également en charge un vaste écosystème de modules qui ajoutent encore plus de fonctionnalités. Par exemple, si vous souhaitez gérer les mises à jour Windows via la ligne de commande, installez simplement le module PSWindowsUpdate.

Après l’avoir installé, utilisez simplement la commande suivante pour installer la dernière mise à jour Windows : Install-WindowsUpdate-AcceptAll-AutoReboot

Cela mettra à jour Windows sans même ouvrir les paramètres. Outre les mises à jour Windows, il existe des modules supplémentaires utiles, tels que ceux pour la gestion d’Active Directory, Microsoft 365, Azure et même AWS. Bash est également apte à quelque chose de similaire, mais PowerShell est mieux intégré à l’écosystème Windows.

Gestion des fichiers et des dossiers avec des commandes intelligentes

Gestion des fichiers en toute simplicité

/fr/images/using-a-powershell-command-to-find-files-larger-than-100mb-in-a-folder.jpg

Quand vous le regardez, Bash et PowerShell gèrent assez bien les fichiers. Mais sous Windows, l’approche de PowerShell est plus cohérente et flexible. Je trouve plus facile de gérer mes fichiers sur le système d’exploitation Windows avec de simples commandes PowerShell.

Par exemple, pour copier tous les fichiers PDF d’un dossier vers un dossier de sauvegarde, il suffit de lancer PowerShell dans le dossier où sont présents les fichiers PDF et d’utiliser cette commande : *.pdf C:\Backup

De même, pour rechercher tous les fichiers de plus de 100 Mo dans un dossier particulier, lancez PowerShell dans ce dossier et utilisez la commande suivante : Get-ChildItem-Recurse | Où-Objet {$_.Length-gt 100MB}

Grâce à la syntaxe Verbe-Nom de PowerShell, toutes ces commandes suivent la même structure. Dans Bash, vous auriez besoin de différents outils et indicateurs pour gérer correctement les fichiers.

L’accès à distance et l’automatisation simplifiés

Travailler sur plusieurs systèmes sans friction

/fr/images/enabling-psremoting-on-powershell.jpg

Une force très sous-estimée de PowerShell est sa prise en charge de l’accès à distance. PowerShell Remoting (PSRemoting) vous permet d’exécuter des commandes sur des machines distantes via WinRM (Windows Remote Management). Il est intégré au système et ne nécessite pas de serveurs SSH tiers.

Par exemple, disons que vous souhaitez redémarrer un service sur 5 PC. Dans Bash, vous auriez besoin d’un accès SSH, d’une clé partagée et d’une boucle. Dans PowerShell, utilisez simplement cette commande : Invoke-Command-ComputerName PC1, PC2, PC3, PC4, PC5-ScriptBlock { Restart-Service spooler }

C’est concis, évolutif et sécurisé. Vous pouvez transmettre des informations d’identification, exécuter des scripts à distance ou utiliser des tâches planifiées. Ceci est très utile dans les environnements d’entreprise ou informatiques où vous devez gérer plusieurs machines. C’est comme avoir un seul panneau de contrôle pour toutes les machines, mais sur une ligne de commande via un script.

PowerShell vous offrira de meilleurs scripts et une facilité d’utilisation

Comme je l’ai dit, il ne fait aucun doute à quel point Bash est incroyable, en particulier pour les machines Linux. Mais si vous travaillez principalement sous Windows, passer à PowerShell vous donnera un meilleur contrôle sur le système d’exploitation que n’importe quel autre shell. Il offre bien plus de fonctionnalités et d’outils que Bash.

Bash est peut-être toujours mon choix préféré sous Linux, mais sous Windows, PowerShell est clairement un gagnant.

*️⃣ Lien source :

PowerShell, utilisation élevée du processeur, quelles applications s’exécutent au démarrage de votre système, passage à PowerShell,