Utilisation de PSReadLine dans 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.
Sommaire
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!