Étant donné le rôle si central des objets dans Windows PowerShell, plusieurs commandes natives ont été conçues pour utiliser des types d'objets arbitraires. La plus importante est la commande Get-Member .
La technique la plus simple pour analyser les objets retournés par une commande consiste à en diriger la sortie vers l'applet de commande Get-Member . L'applet de commande Get-Member vous indique le nom formel du type d'objet et une liste complète de ses membres. Le nombre des éléments retournés peut parfois être écrasant. Par exemple, un objet Process peut avoir plus de 100 membres.
Pour afficher tous les membres d'un objet Process et paginer la sortie afin que vous puissiez en consulter l'intégralité, tapez :
PS> Get-Process | Get-Member | Out-Host -Paging
La sortie de cette commande sera semblable à la suivante :
TypeName: System.Diagnostics.Process Name MemberType Definition ---- ---------- ---------- Handles AliasProperty Handles = Handlecount Name AliasProperty Name = ProcessName NPM AliasProperty NPM = NonpagedSystemMemorySize PM AliasProperty PM = PagedMemorySize VM AliasProperty VM = VirtualMemorySize WS AliasProperty WS = WorkingSet add_Disposed Method System.Void add_Disposed(Event... ...
Nous pouvons rendre cette longue liste d'informations plus exploitable en appliquant un filtre de façon à n'afficher que les éléments qui nous intéressent. La commande Get-Member vous permet de ne répertorier que les membres qui sont des propriétés. Il existe plusieurs formes de propriétés. L'applet de commande affiche tous les types de propriétés si nous affectons la valeur Properties au paramètre Get-Member MemberType. La liste obtenue reste très longue, mais un peu plus facile à gérer :
PS> Get-Process | Get-Member -MemberType Properties TypeName: System.Diagnostics.Process Name MemberType Definition ---- ---------- ---------- Handles AliasProperty Handles = Handlecount Name AliasProperty Name = ProcessName ... ExitCode Property System.Int32 ExitCode {get;} ... Handle Property System.IntPtr Handle {get;} ... CPU ScriptProperty System.Object CPU {get=$this.Total... ... Path ScriptProperty System.Object Path {get=$this.Main... ...
Remarque : | |
Les valeurs autorisées de MemberType sont AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet et All. |
Il existe plus de 60 propriétés pour un processus. La raison pour laquelle Windows PowerShell n'indique souvent que quelques-unes des propriétés d'un objet connu est que les afficher toutes produirait un volume d'informations difficilement gérable.
Remarque : | |
Windows PowerShell détermine comment afficher un type d'objet en s'appuyant sur les informations stockées dans des fichiers XML dont le nom se termine par .format.ps1xml. Les données de mise en forme des objets Process, qui sont des objets .NET System.Diagnostics.Process, sont stockées dans PowerShellCore.format.ps1xml. |
Si vous devez consulter des propriétés autres que celles qu'affiche Windows PowerShell par défaut, vous devrez mettre en forme vous-même les données de sortie. Vous pouvez pour ce faire utiliser les applets de commande Format.