Microsoft PowerShell Object Browser

Il y a quelque temps j’ai découvert un script PowerShell fourni par Microsoft : PowerShell Object Browser.

Il s’agit d’une application écrite en PowerShell qui affiche des objets dans une fenêtre graphique de type explorateur. L’Explorateur d’objets PowerShell affiche les propriétés et les objets enfants de tout objet de cadre PowerShell ou .Net.

Les objet PowerShell ont parfois des propriétés constituées elles-mêmes d’objets.

Par exemple, un simple Get-VM | Get-Member montre des propriétés étranges :

Client                  Property   <strong>VMware.VimAutomation.ViCore.Interop.V1.VIAutomation Client {get;}</strong>
CustomFields            Property   <strong>System.Collections.Generic.IDictionary[string,string] CustomFields {get;}</strong>
DatastoreIdList         Property   string[] DatastoreIdList {get;}
DrsAutomationLevel      Property   <strong>System.Nullable[VMware.VimAutomation.ViCore.Types.V1.Cluster.DrsAutomationLevel] DrsAutomationLevel {get;}</strong>
ExtensionData           Property   <strong>System.Object ExtensionData {get;}</strong>
Folder                  Property   <strong>VMware.VimAutomation.ViCore.Types.V1.Inventory.Folder Folder {get;}</strong>
FolderId                Property   string FolderId {get;}
Guest                   Property   <strong>VMware.VimAutomation.ViCore.Types.V1.VM.Guest.VMGuest Guest {get;}</strong>
GuestId                 Property   string GuestId {get;}
HAIsolationResponse     Property   <strong>System.Nullable[VMware.VimAutomation.ViCore.Types.V1.Cluster.HAIsolationResponse] HAIsolationResponse {get;}</strong>
HARestartPriority       Property   <strong>System.Nullable[VMware.VimAutomation.ViCore.Types.V1.Cluster.HARestartPriority] HARestartPriority {get;}</strong>

Et si on détaille une des propriétés, par exemple avec un (Get-VM).ExtensionData | Get-Member, on n’est guère avancé :

AvailableField          Property   VMware.Vim.CustomFieldDef[] AvailableField {get;}
Capability              Property   VMware.Vim.VirtualMachineCapability Capability {get;}
Client                  Property   VMware.Vim.VimClient Client {get;}
Config                  Property   VMware.Vim.VirtualMachineConfigInfo Config {get;}
ConfigIssue             Property   VMware.Vim.Event[] ConfigIssue {get;}
ConfigStatus            Property   VMware.Vim.ManagedEntityStatus ConfigStatus {get;}
CustomValue             Property   VMware.Vim.CustomFieldValue[] CustomValue {get;}
Datastore               Property   VMware.Vim.ManagedObjectReference[] Datastore {get;}
DeclaredAlarmState      Property   VMware.Vim.AlarmState[] DeclaredAlarmState {get;}

On peut reproduire l’exercice avec les sous-propriétés, et on finit par trouver ce qu’elles contiennent, mais c’est fastidieux.

Cependant il suffit de mettre le résultat de la requête dans une variable, par exemple $VMs = Get-VM, et de lancer le script dans la même session PowerCLI. Aucun paramètre n’est nécessaire. Une fois la fenêtre ouverte, on peut choisir de parcourir différents types d’objets, dont les variables PowerShell.

Et à ce moment, simplement en déroulant les différentes propriétés, on comprend bien plus facilement ce qu’elles contiennent et comment on peut les utiliser.

microsoft-powershell-object-browser-01

Et on peut parcourir d’autres éléments, comme les commandes PowerShell, où ou pourra trouver le détail des options et leurs propriétés.

microsoft-powershell-object-browser-02

Bref, à adopter d’urgence.
Vous le trouverez ici : https://gallery.technet.microsoft.com/PowerShell-Object-Browser-847d62c1

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *