Agence web » Actualités du digital » Utilisation de PSReadLine dans PowerShell –

Utilisation de PSReadLine dans PowerShell –

Logo Powershell

PSReadLine est l’un de ces modules qui peuvent ne pas montrer immédiatement son utilité avant une utilisation régulière. Si vous utilisez souvent la ligne de commande de PowerShell, PSReadLine peut vous faciliter la vie. Inclus dans les versions de PowerShell aussi loin que Windows PowerShell 5, PSReadLine continue d’ajouter de nouvelles fonctionnalités et utilitaires. S’appuyant sur l’héritage vénérable de GNU Readline dans le monde Unix, PSReadLine ajoute des fonctionnalités supplémentaires à l’expérience de ligne de commande PowerShell telles que l’édition multiligne, la coloration syntaxique, IntelliSense prédictif, la prise en charge de l’historique plus riche et d’autres modes d’édition.

Mise à jour et chargement de PSReadLine

La plupart des versions relativement récentes de PowerShell ont une version groupée de PSReadLine. Inclus dès Windows PowerShell 5.0, chaque version ultérieure a ajouté une version plus récente avec PowerShell 7.1 inclus PSReadLine 2.1. Bien sûr, vous souhaiterez peut-être profiter des nouvelles fonctionnalités des anciennes versions de PowerShell. Si PSReadLine n’est pas déjà importé, utilisez Import-Module PSReadLine pour commencer à utiliser les fonctionnalités immédiatement. Pour vous assurer que vous utilisez la dernière version, lisez la suite!

À partir de PowerShell 7.0, PowerShell ignore le chargement automatique de PSReadLine sous Windows si un programme de lecteur d’écran est détecté. Actuellement, PSReadLine ne fonctionne pas bien avec les lecteurs d’écran. Le rendu et la mise en forme par défaut de PowerShell 7.0 sous Windows fonctionnent correctement. Vous pouvez charger manuellement le module si nécessaire.

Windows PowerShell 5.x

Il y a généralement deux étapes pour mettre à jour PSReadLine avec Windows PowerShell 5.0 ou 5.1. Tout d’abord, vous devez vous assurer que vous utilisez la version 1.6.0 ou supérieur de PowerShellGet. Pour ce faire, vous devez exécuter la commande suivante dans une session Windows PowerShell élevée.

Install-Module -Name PowerShellGet -Force

Ensuite, assurez-vous que toutes les sessions PowerShell sont fermées et dans un cmd.exe invite exécutez le code suivant. La raison pour laquelle cela est exécuté depuis cmd.exe est que, par défaut, PSReadLine est chargé et ne peut pas être mis à jour s’il est en mémoire.

powershell -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"

PowerShell 6.x Core et PowerShell 7

Pour mettre à jour PSReadLine dans les versions plus récentes de PowerShell, vous pouvez effectuer une opération similaire en fermant toutes les sessions PowerShell ouvertes, pwsh.exe, et exécutez un cmd.exe session avec le code suivant.

pwsh.exe -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"

Mise à jour de PowerShell Gallery installé PSReadLine

Vous avez peut-être installé PSReadLine à partir de la galerie PowerShell, et si vous l’avez fait, vous pouvez exécuter l’une des commandes suivantes pour mettre à jour selon que vous utilisez Windows PowerShell ou PowerShell Core / 7.

# Windows PowerShell
powershell -noprofile -command "Update-Module PSReadLine -AllowPrerelease"

# PowerShell Core/7
pwsh.exe -noprofile -command "Update-Module PSReadLine -AllowPrerelease"

Caractéristiques de PSReadLine

Que pouvons-nous faire avec PSReadLine? Il existe un certain nombre de fonctionnalités très intéressantes qui peuvent vous aider dans votre expérience de la ligne de commande. Ci-dessous, vous verrez comment plusieurs fonctionnalités fonctionnent dans la pratique.

Coloration de la syntaxe

Un exemple de la façon dont la coloration de la syntaxe rend la lisibilité de la ligne de commande beaucoup plus facile, voir cet exemple où vous pouvez voir que la sortie est colorée, pour les noms de variable, les noms de fonction et les opérateurs de comparaison.

Bien que cette ligne de commande ne soit pas terriblement longue, il y a des cas où la division sur plusieurs lignes serait beaucoup plus facile à gérer. Lisez la suite pour voir comment nous pouvons diviser cela sur plusieurs lignes, tout comme un éditeur de code traditionnel.

Édition multiligne

En prenant la même série de commandes ci-dessus, comment diviser cela sur plusieurs lignes? En utilisant la combinaison de touches par défaut Shift-Enter (sous Windows), nous pouvons diviser sur les lignes comme indiqué par >>.

Vous pouvez utiliser les touches fléchées pour naviguer dans le texte et seulement lorsque vous êtes prêt à exécuter la commande, vous pouvez appuyer sur la touche Entrée pour l’exécuter. Qu’en est-il lorsque vous n’êtes pas sûr de la commande à utiliser? Predictive Intellisense à la rescousse!

Intellisense prédictif

Tout d’abord, nous devons activer Predictive IntelliSense. Vous pouvez lui dire d’utiliser différents types de sources, mais le plus courant est simplement votre historique. Gardez à l’esprit que jusqu’à ce que vous ayez un fichier d’historique avec du contenu créé, cela peut ne pas être le plus utile, mais après un certain temps, cela devient pratique.

# This will enable the prediction source for IntelliSense
Set-PSReadLineOption -PredictionSource 'History'
# (Optional) Change the darker grey to a lighter grey to account for dark backgrounds
Set-PSReadLineOption -Colors @{ InlinePrediction = '#9CA3AF'}

Nous pouvons maintenant tester cela en utilisant la même commande que nous venons d’exécuter. Vous pouvez le voir après avoir simplement tapé Get nous voyons déjà la commande proposée pour la complétion. Vous pouvez utiliser la flèche droite (par défaut) pour accepter la sélection.

Fichier d’historique PSReadLine

Puisque nous avons parlé du fichier historique, il peut être utile de savoir où ce fichier est réellement stocké. Ce qui est contenu à l’intérieur est chaque commande sur une nouvelle ligne, sans données supplémentaires dans un format simple.

  • les fenêtres$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine
  • Linux$env:XDG_DATA_HOME/powershell/PSReadLine ou $env:HOME/.local/share/powershell/PSReadLine

Savoir! Lorsque vous utilisez des applets de commande comme ConvertTo-SecureString les mots de passe peuvent être stockés dans le fichier historique.

Conclusion

PSReadLine est un module très utile pour améliorer votre expérience en ligne de commande. Avec l’édition multiligne, la coloration syntaxique et l’ajout récent de Predictive IntelliSense, c’est un ajout indispensable à toute boîte à outils d’administrateur système!