PowerShell et les classes
Introduction
PowerShell est un langage orienté objet, ce qui signifie qu’il manipule des objets provenant de .NET ou de son framework. Les classes sont disponibles depuis la version 5.0 de PowerShell. Pour bien saisir ce que représente une classe, il est essentiel de comprendre d’abord la notion d’objet.
Définition d’une classe
1. Une classe, qu’est-ce que c’est ?
Une classe est une structure qui permet de définir et de personnaliser des objets. On peut la comparer à l’ossature d’un objet, autour de laquelle s’articulent différents éléments, à l’image des os dans un corps. Sa structure se détermine par des propriétés (données) et des méthodes (comportements).
Prenons comme exemple un objet du quotidien qui est particulièrement pertinent en ce moment : un livre. Un livre se constitue de différentes choses telles qu’un titre, un nombre de pages, un ou des auteur(s), un éditeur, un résumé, une date de publication…
Une classe est donc la modélisation théorique de notre livre. Elle se distingue en différents éléments :
-
sa déclaration ;
-
ses propriétés ;
-
ses méthodes ;
-
ses constructeurs.
2. Pourquoi des classes ?
a. Meilleure organisation du code
Les classes PowerShell ont été introduites pour offrir une structure plus solide aux scripts et modules. Elles facilitent une meilleure organisation du code. En effet, avant l’adoption des classes, il était nécessaire de diviser le code en diverses fonctions ou modules pour l’intégrer dans un script. Grâce...
Contenu et création d’une classe
1. Déclaration d’une classe : Class
À l’instar d’une fonction avec le mot clé Function, la déclaration d’une classe s’effectue à l’aide d’un mot-clé nommé Class.
Il est essentiel de bien choisir le nom de la classe à créer afin que celui-ci soit le plus pertinent possible. En effet, ce dernier doit être le plus représentatif possible de son fonctionnement.
La déclaration d’une classe s’opère comme ci-dessous :
Class <NomDeMaClasse> {
[Type]<Membre1>
[Type]<Membre2>
[Type]<Membre3>
...
}
Dans l’exemple qui suit, nous allons créer une classe appelée Livre. Pour commencer, cette classe sera vide et ne contiendra que son nom.
Ci-dessous le code permettant de déclarer et créer notre classe :
class Livre{}
Pour invoquer cette classe dans PowerShell, vous devez entourer le nom de la classe avec des crochets "[" et "]", comme illustré ci-dessous :
[Livre]
Voici le résultat :
PS C:\Users\damien.vanrobaeys> [Livre]
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False Livre System.Object
Affichons maintenant le contenu de notre classe. Il conviendra pour cela d’en afficher les membres.
Cela peut être réalisé à l’aide de la commande :
[NotreClasse].GetMembers()
Dans notre exemple :
[Livre].GetMembers()
Pour le moment, nous ne disposons que des éléments de base, car aucune propriété ni méthode n’ont été ajoutées.
2. Les propriétés
Une propriété est une information ou un champ associé à un objet de la classe....
Ajout d’éléments dans une classe
1. Ce que nous souhaitons
Comme indiqué précédemment, notre classe est maintenant créée, mais elle est actuellement vide. Nous allons y ajouter un élément livre qui comprendra les éléments suivants :
-
Titre : Débuter avec PowerShell
-
Auteurs : Jérôme Bezet-Torres et Damien Van Robaeys
-
Résumé : Débuter avec PowerShell
-
Éditeur : Éditions ENI
-
Date de publication : 15/05/2023
-
Nombre de pages : 744
-
Étiquettes : PowerShell, Administration, Scripting, Automatisation, Windows
2. Ajout d’éléments ou instanciation de la classe
a. Que signifie instancier une classe ?
Nous souhaitons ajouter un élément livre dans la classe Livre. Pour cela, nous devons créer une instance de la classe Livre, c’est-à-dire un objet qui représente un livre concret. Ce processus est appelé instanciation. Instancier une classe signifie créer un objet réel à partir du plan défini dans notre classe.
b. Comment instancier une classe ?
Pour ajouter un élément dans une classe, nous allons utiliser la méthode nommée new(). Il s’agit d’une méthode statique générée par PowerShell pour instancier une classe.
Cette méthode s’utilise...
Visibilité
1. Qu’est-ce que la visibilité ?
La visibilité d’une propriété ou d’une méthode, comme son nom l’indique, détermine si elle est accessible ou non. Par défaut, tous les membres d’un objet sont visibles lorsque celui-ci est créé avec une classe PowerShell.
Dans notre exemple, les différentes propriétés et méthodes sont donc visibles.
Différents types de visibilité sont disponibles :
-
Public --> accessible partout (par défaut) ;
-
Private --> accessible uniquement dans la classe ;
-
Protected --> accessible dans la classe et ses classes dérivées ;
-
Hidden --> masqué dans l’auto-complétion mais utilisable si on connaît son nom.
2. Comment cacher un élément ?
Pour cacher un élément, il suffit d’ajouter le terme hidden avant une propriété ou méthode. La syntaxe est la suivante :
PS > Class <NomDeMaClasse> {
Hidden [Type]<Membre1>
[Type]<Membre2>
Hidden [Type]<Membre3>
...
}
Dans l’exemple, nous allons cacher la propriété Etiquettes.
Ci-dessous le code de la classe adaptée pour ce faire...