[PowerShell] L’autocomplétion de PowerShell

IC816884
Source

PowerShell est une console de commandes améliorée disposant de plus de fonctionnalités que la console classique et permet surtout l’utilisation de scripts console proches de ceux que l’on peut retrouver sur Linux. Ce qui est intéressant avec PowerShell est qu’il est buildé sur le framework .NET (et emploie par conséquent le langage CLR) 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és. 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 :

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

Si d’autres résultats sont possibles, continuer à appuyer sur  TAB affichera successivement les résultats suivants. La combinaison  SHIFT TAB 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’un objet instancié. La combinaison pour ce type d’autocomplétion est CTRLSPACE. Exemples pratiques :

powershell0

Ici, j’ai entré la lettre b et j’ai ensuite appuyé sur CTRL et SPACE 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.

powershell1

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 est un attribut de cet objet. Nous pouvons donc le récupérer 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 :

Ici, à nouveau, l’autocomplétion est utile. Pour ne pas avoir à écrire « LastAccessTimeUtc » à la main, j’ai simplement appuyé sur CTRL et SPACE 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, il suffira à nouveau d’entrer « $foo », suivi d’un point, puis d’appuyer sur CTRL et SPACE 🙂

Et si vous vous demandez « pourquoi devoir entrer un point ? », je vous répondrai que ce n’est qu’une question de syntaxe. Le point indique que l’on va cibler un attribut (ou une méthode) de l’objet et il faut bien un séparateur entre le nom et ceux-ci… Tel est le rôle du point !

powershell2

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. 🙂


Related Posts Plugin

Lyyn~

Lyyn~

L'informatique est un monde magique et complexe, partager quelques connaissances et astuces au travers de ce blog me permet de participer à la construction d'un web meilleur pour tous !