Astuce PowerShell : maîtriser l’historique des cmdlets PowerShell avec PSReadLine

PowerShell est un outil puissant pour les administrateurs et les développeurs, mais les tâches répétitives peuvent vous ralentir. En gérant votre historique de cmdlets et en tirant parti des fonctionnalités de PSReadLine, vous pouvez optimiser votre flux de travail, gagner du temps et améliorer votre productivité. Ce guide vous présentera des conseils pratiques et des scénarios pour tirer le meilleur parti de l’historique des cmdlets PowerShell et de PSReadLine.


Pourquoi la gestion de l’historique des cmdlets est importante

Imaginez que vous exécutez à plusieurs reprises une séquence complexe de commandes ou que vous dépannez un script qui s’étend sur plusieurs lignes. Au lieu de retaper des commandes ou de chercher dans d’anciens scripts, vous pouvez accéder à votre historique de cmdlets pour une réutilisation rapide. Avec PSReadLine, vous pouvez aller encore plus loin en personnalisant votre expérience et en activant IntelliSense prédictif.


Accéder à l’historique des cmdlets

PowerShell stocke automatiquement votre historique de commandes dans un fichier, ce qui facilite sa consultation ou sa modification. Voici comment y accéder :

Emplacement du fichier d’historique des cmdlets

Le fichier d’historique des cmdlets se trouve à l’emplacement suivant :
C:\Users\%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine

Étapes pour gérer l’historique des cmdlets

  1. Localiser le fichier
    Ouvrez le dossier et trouvez le fichier nommé ConsoleHost_history.txt.
  2. Modifier le fichier
    Utilisez n’importe quel éditeur de texte (par exemple, le Bloc-notes ou VS Code) pour ajouter, supprimer ou modifier des commandes.
  3. Créer un raccourci
    Créez un raccourci vers le fichier sur votre bureau pour un accès rapide.

Cas d’usage courant

Un scénario typique consiste à réutiliser une séquence de commandes pour la maintenance du serveur. Par exemple, si vous exécutez fréquemment des commandes pour redémarrer des services, vérifier des journaux ou configurer des paramètres, vous pouvez enregistrer ces commandes dans le fichier d’historique pour un accès rapide.


Exploiter tout le potentiel de PSReadLine

PSReadLine est un module qui améliore l’expérience de la console PowerShell. Il offre des fonctionnalités telles que la coloration syntaxique, IntelliSense prédictif et les raccourcis clavier personnalisés, ce qui facilite le travail avec PowerShell.

Fonctionnalités clés de PSReadLine

  1. Coloration syntaxique
    Met en évidence les erreurs de syntaxe et rend les commandes plus lisibles.
  2. IntelliSense prédictif
    Suggère automatiquement des commandes en fonction de votre historique ou de vos plug-ins.
  3. Raccourcis clavier personnalisés
    Associez des touches à des actions personnalisées pour une exécution plus rapide.
  4. Modification multiligne
    Modifiez et exécutez des commandes multilignes en toute simplicité.
  5. Affichage dynamique de l’aide
    Affiche les informations d’aide directement dans la console sans vous faire perdre le fil.

Scénarios pratiques d’utilisation de PSReadLine

Scénario 1 : automatiser les tâches répétitives

Supposons que vous redémarriez fréquemment un serveur Web et que vous vérifiiez son état. Au lieu de taper ces commandes à chaque fois, vous pouvez les enregistrer dans l’historique ou les associer à un raccourci clavier.

Restart-Service -Name "WebServer"
Get-Service -Name "WebServer" | Select-Object Status

Scénario 2 : IntelliSense prédictif pour découvrir les commandes plus rapidement

IntelliSense prédictif vous aide à trouver et à exécuter des commandes rapidement. Par exemple, si vous utilisez souvent Get-Process, taper « Get » suggérera des commandes de votre historique, notamment Get-Process.

Pour activer IntelliSense prédictif :

Set-PSReadLineOption -PredictionSource History

Scénario 3 : raccourcis clavier personnalisés pour plus d’efficacité

Vous pouvez associer une touche pour effectuer rapidement une recherche vers l’arrière dans votre historique de commandes :

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward

Ou créer une association personnalisée pour enregistrer une commande dans l’historique sans l’exécuter :

$parameters = @{
    Key = 'Alt+w'
    ScriptBlock = {
      $line = $null
      $cursor = $null
      [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)
      [Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)
      [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
    }
}
Set-PSReadLineKeyHandler @parameters

Scénario 4 : gestion sécurisée de l’historique des commandes

PSReadLine filtre les données sensibles comme les mots de passe et les jetons du fichier d’historique pour protéger votre sécurité. Par exemple :

$password = 'MySecurePassword'
Set-Secret -Name "MySecret" -SecretValue $password

Ces commandes ne seront pas enregistrées dans le fichier d’historique.


Installer PSReadLine

PSReadLine est disponible dans la galerie PowerShell. Pour l’installer, exécutez :

Install-Module -Name PSReadLine -AllowClobber -Force

Remarque : PSReadLine nécessite PowerShell 5.1 ou une version ultérieure. Il fonctionne avec Windows Terminal, Visual Studio Code et l’hôte de console Windows par défaut, mais pas avec Windows PowerShell ISE.


Points forts des versions

PSReadLine a considérablement évolué depuis sa première version dans Windows PowerShell 5.1. Les versions clés sont les suivantes :

  • v2.3.6: livré avec PowerShell 7.4.7 et 7.5.0
  • v2.3.4: a introduit des améliorations du nettoyage des données sensibles.
  • v2.2.6: a amélioré la modification multiligne et IntelliSense prédictif.

Pour plus d’informations, consultez les notes de publication d’about_PSReadLine.


En savoir plus sur PSReadLine

Pour découvrir d’autres fonctionnalités et exemples, consultez la documentation officielle :

Laisser un commentaire