[PowerShell] L'autocomplétion de PowerShell

PowerShell est un interpréteur de commandes amélioré disposant de plus de fonctionnalités que la console classique et permet surtout l’utilisation de scripts proches de ceux que l’on peut retrouver sur Linux, dans le principe. Ce qui est intéressant avec PowerShell est qu’il est buildé sur le framework .NET et utilise donc des objets .NET. Les scripts créés pour PowerShell sont appelés “cmdlets” (pour “command-let”). L’autocomplétion est présente, comme sur la console de commande classique intégrée à Windows mais elle a été améliorée afin de gérer, par exemple, les attributs d’objets instanciés dans notre session.

Autocomplétion classique

C’est celle avec laquelle nous avons été habitué-es. Le raccourci clavier est TAB et il affichera successivement toutes les valeurs pouvant compléter une commande préalablement entrée. Ainsi, si on écrit :

1
C:\Users\KISS> ipc

Et que nous appuyons ensuite sur TAB, PowerShell (tout comme la console de commandes) complétera notre entrée avec :

1
C:\Users\KISS> ipconfig.exe

Si d’autres résultats sont possibles, continuer à appuyer sur TAB affichera successivement les résultats suivants. La combinaison SHIFTTAB quant à elle permettra de boucler en sens inverse et donc d’afficher les résultats précédents.

#Autocomplétion améliorée

Le second système d’autocomplétion qu’apporte PowerShell est bien plus pratique. Au lieu de n’offrir qu’une succession de résultats à l’aveugle, nous pouvons désormais avoir accès à une liste des commandes disponibles. Par cette même autocomplétion, nous pouvons aussi avoir accès à la liste des méthodes et attributs d’une variable (un objet donc). La combinaison pour ce type d’autocomplétion est CTRLSPACE. Exemples pratiques :

Ici, j’ai entré la lettre b et j’ai ensuite appuyé sur CTRL et ESPACE en même temps. J’ai donc eu une liste de toutes les applications, fichiers et dossiers accessibles depuis l’endroit où je suis et dont le nom commence par “b”. Pour naviguer dans les options disponibles, on peut utiliser TAB ou les touches fléchées, au choix.

On voit dans cette image que la commande “ls” (équivalent à “dir”) renvoie la liste des fichiers et dossiers contenus dans le dossier courant. En réalité, la console instancie temporairement un objet contenant ces données et chaque colonne que l’on voit dans le résutat est en réalité une propriété de cet objet. Nous pouvons donc récupérer ce dernier dans une variable et profiter de l’autocomplétion. Je vais ici récupérer la liste des fichiers et dossiers dans une variable mais en ne conservant que leur nom (“Name”) et la date du dernier accès (“LastAccessTimeUtc”) grâce à la ligne suivante :

1
$foo = ls | Select Name, LastAccessTimeUtc

Ici, à nouveau, l’autocomplétion est utile. Pour ne pas avoir à écrire “LastAccessTimeUtc” à la main, j’ai simplement appuyé sur CTRL et ESPACE après avoir écrit “Last”. Powershell m’a donc affiché les 4 attributs existants de l’objet renvoyé par “ls” qui commencent par “Last” (cf. la capture d’écran ci-dessus).

On peut évidemment voir ce que contient l’objet $foo en entrant simplement son nom dans la console et remarquer qu’il contient les attributs que nous avions demandé. Si on veut voir la liste de tous les attributs ainsi que les méthodes utilisables sur foo,ilsuffiraaˋnouveaudentrer"foo, il suffira à nouveau d'entrer "foo", suivi d’un point, puis d’appuyer sur CTRL et ESPACE 😃

PowerShell réserve bien plus de surprise que ça, il se peut que je fasse d’autres articles dessus à l’avenir si je m’y intéresse de plus prêt. Dans tous les cas, beaucoup de ressources sont d’ores et déjà disponibles sur le web, surtout en anglais. 😊