Analyser un objet avec Get-Member
Sommaire
I. Présentation
Après avoir vu comment solliciter l'aide de PowerShell avec le cmdlet "Get-Help" ou en consultant l'aide en ligne du site Microsoft Learn, nous allons voir comment explorer un cmdlet avec "Get-Member" afin de mieux comprendre son fonctionnement.
Le cmdlet "Get-Member" va nous permettre de récupérer des informations sur l'objet retourné par une commande PowerShell, notamment la liste de toutes les propriétés, de toutes les méthodes et de tous les événements disponibles.
II. Les propriétés et les méthodes
Lorsque nous travaillons avec PowerShell, deux concepts clés que nous utilisons régulièrement sont les propriétés et les méthodes. Il est important de bien comprendre ces deux notions. PowerShell étant un langage orienté objet, chaque objet a des propriétés et des méthodes qui nous permettent d'interagir avec lui.
A. Les propriétés
Les propriétés sont les caractéristiques d'un objet et elles pourront être plus ou moins nombreuses d'un objet à un autre, en fonction de la quantité d'informations à stocker. Pour bien comprendre le principe des propriétés, nous allons l'illustrer avec un exemple.
Si nous avons un objet "Voiture", il pourrait avoir un ensemble de propriétés permettant de décrire la voiture : "Marque", "Modèle", "Couleur", "Puissance", "Motorisation", etc. Pour accéder aux propriétés d'un objet en PowerShell, nous utilisons la notation pointée. Par exemple, si "Voiture" est notre objet, nous pouvons accéder à la marque de la voiture en utilisant ce type de notation : "Voiture.Couleur".
Si nous prenons l'exemple d'un objet qui représente un service Windows, il aura plusieurs propriétés : un nom technique, un nom d'affichage, un état, un type de démarrage, etc... Ce sont ces propriétés.
Exécutez la commande suivante (pour rappel, elle permet d'obtenir la liste des services enregistrés sur la machine locale) :
Get-Service
Les objets retournés contiennent plusieurs propriétés, dont trois propriétés visibles dans la console : Status, Name, et DisplayName. Par la suite, "Get-Member" nous permettra d'obtenir la liste de toutes les propriétés disponibles.
Si nous souhaitons récupérer uniquement la valeur d'une propriété particulière, nous pouvons utiliser la notation pointée. Puisque nous utilisons directement le nom du cmdlet, il convient de l'encadrer avec des parenthèses. Voici plusieurs exemples avec différents noms de propriétés :
# Récupérer uniquement la valeur de la propriété DisplayName
(Get-Service).DisplayName
# Récupérer uniquement la valeur de la propriété Name
(Get-Service).Name
# Récupérer uniquement la valeur de la propriété Status
(Get-Service).Status
Voici un exemple de retour :
B. Les méthodes
Les méthodes sont des actions que l'on peut effectuer sur un objet. Autrement dit, c'est une manière d'interagir avec un objet pour changer son état ou effectuer une tâche spécifique. En reprenant notre exemple de l'objet "Voiture", nous pouvons imaginer plusieurs méthodes : "Conduire", "Freiner", "Klaxonner", etc. Pour appeler et exécuter une méthode avec PowerShell, nous pouvons également utiliser la notation pointée, suivie de parenthèses. Par exemple : "Voiture.Conduire()".
Il est important de noter que toutes les méthodes ne changent pas l'état de l'objet. Certaines méthodes peuvent simplement retourner des informations sur l'objet sans le modifier, ou effectuer une manipulation sur une chaine de caractères.
Si nous reprenons l'exemple précédent basé sur "Get-Service", sachez que ce cmdlet prend en charge plusieurs méthodes, dont "Start" et "Stop" qui permettent respectivement de démarrer et arrêter un service. Ainsi, nous pouvons démarrer le service Windows Update (associé au nom "wuauserv") avec cette commande :
(Get-Service -Name "wuauserv").Start()
Il existe d'autres méthodes populaires et très pratique pour manipuler les chaînes de caractères. Par exemple, pour passer une chaine de caractères en majuscules (ToUpper()), en minuscules (ToLower()), pour en extraire une partie (Substring()), ou pour la découper en plusieurs parties (Split()). Quand nous manipulons des noms et prénoms dans le but de "construire" des identifiants correspondant à un format bien précis, ces méthodes sont très pratiques !
Voici plusieurs exemples sur l'image ci-dessous :
Pour approfondir ce sujet, vous pouvez lire ces articles :
- PowerShell et la méthode Split()
- PowerShell et la méthode Substring()
- PowerShell et la méthode Trim()
III. Utilisation de Get-Member
Comment obtenir la liste des propriétés et des méthodes disponibles ? Voilà, la question à laquelle va permettre de répondre le cmdlet "Get-Member" (dont l'alias est "gm").
Tout d'abord, sachez que "Get-Member" s'utilise toujours de cette façon :
<Commande> | Get-Member
Ceci est compréhensible, car nous devons lui indiquer un objet à analyser. Il va le récupérer par l'intermédiaire du caractère "|" que l'on appelle pipeline et dont le fonctionnement sera détaillé au prochain chapitre.
Pour obtenir la liste des propriétés et des méthodes disponibles pour la commande "Get-Service", nous allons exécuter ceci :
Get-Service | Get-Member
Ci-dessous, un extrait du résultat retourné. Nous pouvons voir que la colonne "MemberType" retourne un ensemble de méthodes et de propriétés (ainsi que des alias de propriétés). Nous pouvons visualiser les deux méthodes précédemment : "Start()" et "Stop()". Constatez aussi que la liste contient bien plus que 3 propriétés (celles retournées par défaut par la commande "Get-Service").
Si nous souhaitons afficher les propriétés "DisplayName" et "StartType" pour visualiser le nom d'affichage du service et son type de démarrage, nous pouvons faire ceci :
Get-Service | Format-Table DisplayName, StartType
La commande "Format-Table" retourne un tableau avec les deux propriétés indiquées :
Nous pouvons ajouter le paramètre "MemberType" pour obtenir uniquement la liste des méthodes ou des propriétés.
Get-Service | Get-Member -MemberType Method
Get-Service | Get-Member -MemberType Property
IV. Conclusion
Comprendre les propriétés et les méthodes est essentiel pour travailler efficacement avec PowerShell, car elles représentent la richesse des objets PowerShell. Comme nous l'avons vu, le cmdlet "Get-Member" joue un rôle précieux car il permet d'afficher les propriétés et les méthodes relatives à un objet.