20/09/2024

Analyser un objet avec Get-Member

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.

Aide sur Get-Member

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 :

Exemples de méthodes PowerShell

Pour approfondir ce sujet, vous pouvez lire ces articles :

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").

Exemple de Get-Member avec PowerShell

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.


livre pour apprendre PowerShell
author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.