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.
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.
Bref, à adopter d’urgence.
Vous le trouverez ici : https://gallery.technet.microsoft.com/PowerShell-Object-Browser-847d62c1