PowerShell et Substring : extraire une chaîne d’une chaîne

I. Présentation

PowerShell contient de nombreuses méthodes permettant de manipuler les variables et les valeurs associées. Il y a une méthode que j'utilise très régulièrement dans mes scripts PowwerShell, c'est Substring(). Cette méthode va permettre de prendre une chaîne de caractères et d'en extraire une partie. Par exemple, pour récupérer les trois premiers caractères d'une chaîne, ou alors le dernier caractère d'une chaîne.

Dans ce tutoriel, je vais vous montrer comment utiliser Substring() en PowerShell.

II. Utiliser Substring en PowerShell

Nous allons commencer par faire simple afin que je puisse vous expliquer le fonctionnement de Substring(). Prenons la chaîne de caractères suivantes dans une variable $Texte :

$Texte = "www.it-connect.fr"

Dans cette chaîne de caractères, le premier "w" a la position 0, et non 1. C'est une information importante à prendre en compte pour bien utiliser Substring(). D'ailleurs, cette méthode a besoin de deux paramètres :

  • La position du premier caractère à extraire
  • Le nombre de caractères à extraire

Par exemple, si l'on veut extraire "www" de la chaîne complète, il va falloir prendre "0" comme position du premier caractère, puis le nombre de caractères à extraire est "3". Ce qui donne :

$Texte.Substring(0,3)

Ce qui donne :

Lorsque l'on crée un utilisateur dans l'Active Directory et que l'on veut obtenir ses initiales pour renseigner le champ associé, grâce à Substring() nous pouvons facilement obtenir la première lettre du prénom et la première lettre du nom. Il suffit d'utiliser Substring() de façon à récupérer le première caractère, comme ceci :

$Texte.Substring(0,1)

Passons maintenant à l'utilisation de Substring() avec des chaînes de caractères dynamiques.

III. Utiliser Substring avec des chaînes dynamiques

De manière simple, nous pouvons utiliser Substring() lorsque la chaîne est de longueur fixe, ou en tout cas lorsque l'on veut récupérer un ou plusieurs caractères en début de chaîne. Si l'on veut récupérer, par exemple, le dernier caractère d'une chaîne mais que l'on ne connaît pas à l'avance la longueur de la chaîne, c'est un problème. En effet, puisque l'on doit indiquer la position de départ pour Substring(), elle sera variable en fonction de la longueur de la chaîne.

Pour réussir à obtenir le dernier caractère d'une chaîne en PowerShell, nous allons coupler l'utilisation de Substring() à celle de la propriété Length. Cette propriété va permettre d'obtenir la longueur d'une chaîne. Si vous exécutez la commande suivante, vous obtiendrez la longueur de la chaîne :

$Texte.Length

Reprenons notre variable précédente, le dernier caractère est "r". Pour l'obtenir, nous allons prendre comme position de départ la longueur de la chaîne - 1 : la première position est 0 et non 1, ce qui nécessite de soustraire 1. Nous souhaitons prendre "1" caractère, ce qui donne :

$Texte.Substring($Texte.Length-1,1)

En fait, il y a une autre façon d'utiliser Substring() où l'on va spécifier un seul paramètre. Nous pourrions obtenir le même résultat que la commande précédente simple avec ceci :

$Texte.Substring($Texte.Length-1)

Lorsque l'on utilise cette syntaxe, on va définir une position de départ et ensuite Substring va poursuivre jusqu'à la fin de la chaîne. Dans notre cas, comme on se positionne sur le dernier caractère, cela perme de l'obtenir directement. De cette façon, nous pourrions obtenir facilement les X derniers caractères de la chaîne. Par exemple, pour obtenir les 3 derniers caractères :

$Texte.Substring($Texte.Length-3)

Bien sûr, il faudra récupérer le résultat de cette extraction dans une variable :

$ChaineExtraite = $Texte.Substring($Texte.Length-3)

Voilà, vous êtes désormais en mesure d'utiliser Substring() dans vos scripts PowerShell !

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

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.

Nombre de posts de cet auteur : 5471.Voir tous les posts

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.