Ceci est une ancienne révision du document !
Les bases de Powershell - 2ème partie
On continue avec les bases du langage Powershell.
Les chaînes de caractères
Manipuler des chaînes de caractères est utile pour afficher des résultats, extraire des données… A cette effet, Powershell dispose de certaines méthodes et de l'interprétation de certains caractères spéciaux, dits d'échappements.
Caractères d'échappements
Référence : Microsoft
| Caractère | Explication |
|---|---|
`r | Crée un retour charriot, en gros revient au début de la ligne |
`n | Crée un nouvelle ligne |
`r`n | Du coup, retour charriot sur une nouvelle ligne, l'équivalent de la touche Entrée dans un traitement de texte |
`t | Crée une tabulation horizontale |
`v | Crée une tabulation verticale |
`b | Reviens sur un carcatère (Backspace). Ce retour est non destructif. Je cherche encore son utilité… |
`a | Émet un bip (Alarm) |
`0 | Caractère nul. A l'affichage, équivaut à un espace mais différent d'un point de vu codage de caractère |
`' | Permet d'afficher ' sans qu'il ne soit interprété |
`` | Permet d'afficher ` sans qu'il ne soit interprété |
`" | Permet d'afficher " sans qu'il ne soit interprété |
Les opérateurs
Référence : Microsoft
| Opérateur | Explication | Exemple |
|---|---|---|
+ | Renvoie une nouvelle chaîne contenant la chaîne A suivit de la chaîne B. | $A = "abc" $B = "def" $A + $B abcdef |
* | Renvoie une nouvelle chaîne contenant autant d'occurrence de la chaîne A qu'indiqué. | $A = "a" $A * 10 aaaaaaaaaa |
Les méthodes
Référence : Microsoft
| Méthode | Explication | Exemple |
|---|---|---|
.Chars() | Renvoie le caractère présent à la position indiquée dans la chaîne A. La première position est numéroté 0. | $A = "abcd" $A.Chars(1) b |
.CompareTo() | Compare une chaîne avec une autre. Le résutat peut être -1, 1 ou 0 selon que la référence de la chaîne comparée précède, suit ou apparaît à la même position que la référence de la chaîne traité. En gros, 0 si les chaînes sont identiques, 1 si la chaîne A a plus de caractères que la chaîne B et/ou que ces derniers sont plus élevés dans la hiérarchie des caractères (E>e) et -1 si la chaîne B a plus de caractères que la chaîne A et/ou que ces derniers sont plus élevés dans la hiérarchie des caractères. | $A = "abcd" $B = "abc" $A.CompareTo($B) 1 |
.Contains() | Renvoie $true ou $false selon que la chaîne A contient ou pas la chaîne B. Si B est vide, la réponse sera toujours $true. | $A = "abcd" $B = "bc" $A.Contains($B) $true |
.EndsWith() | Renvoie $true ou $false selon que la chaîne A finit ou pas par la chaîne B. Si B est vide, la réponse sera toujours $true. | $A = "abcd" $B = "cd" $A.EndsWith($B) $true |
.Equals() | Renvoie $true ou $false selon que la chaîne A est égal ou pas à la chaîne B. Sensible à la casse. | $A = "abc" $B = "ABC" $A.Equals($B) $false |
.IndexOf() | Renvoie la position de la première occurrence de la chaîne B dans la chaîne A. La première position est numéroté 0 et -1 sera renvoyé si aucune occurrence n'est trouvé. | $A = "abc" $B = "c" $A.IndexOf($B) 2 |
.IndexOfAny() | Renvoie la position de la première occurrence trouvé dans la chaîne A parmi les caractères de la chaîne B. La première position est numéroté 0. En gros, il indique la position dès qu'il trouve dans A, une lettre présente dans B. La première position est numéroté 0 et -1 sera renvoyé si aucune occurrence n'est trouvé. | $A = "abcdef" $B = "Cfe" $A.IndexOfAny($B) 4 |
.Insert() | Insert la chaîne B dans la chaîne A à la position indiquée. | $A = "abcdef" $B = "ghi" $A.Insert(3,$B) abcghidef |
.GetEnumerator() | Renvoie sur des lignes séparées chaque caractère de A. | $A = "abc" $A.GetEnumerator(3,$B) a b c |
.LastIndexOf() | Comme IndexOf() mais pour la dernière occurence. La première position est numéroté 0 et -1 sera renvoyé si aucune occurrence n'est trouvé. | $A = "abcdefdefacb" $B = "c" $A.LastIndexOf($B) 10 |
.LastIndexOfAny() | Comme IndexOfAny() mais pour la dernière occurence. La première position est numéroté 0 et -1 sera renvoyé si aucune occurrence n'est trouvé. | $A = "abcdefdefacb" $B = "Cfe" $A.LastIndexOfAny($B) 8 |
.PadLeft() | Ajoute autant d'espace qu'indiqué au début de la chaîne A. | $A = "abc"
$A.PadLeft(10)
abc
|
.PadRight() | Même chose mais à la fin. | $A = "abc" $B = "def" $A.PadRight(10) + $B abc def |
.Remove() | Supprime la quantité indiquée de caractères à partir de la position indiquée. | $A = "abcdefghi" $A.Remove(3,5) abci |
.Replace() | Remplace toutes les occurrences d'un caractère par un autre caractère. | $A = "abcabcabc"
$A.Replace("a","i")
ibcibcibc
|
.Split() | Sépare la chaîne en plusieurs chaines. La séparation se fait au niveau du caractère indiqué. | $A = "Fichier.txt"
$A.Split(".")
Fichier
txt
|
.StartsWith() | Renvoie $true si la chaîne A commence par la chaîne B et $false dans le cas contraire. | $A = "abcdefghi" $B = "abc" $A.StartsWith($B) $true |
.Substring() | Extraie de la chaîne A, à partir de la position indiquée, la quantité de caractère indiquée. | $A = "abcdefghi" $A.Substring(4,3) efg |
.ToCharArray() | Transforme une chaîne de caractère en tableau contenant chaque caractère. A l'affichage, ça ressemble à .GetEnumerator() mais le type d'objet est différent. | $A = "abc" $A.ToCharArray() a b c |
.ToLower() | Convertit toutes les majuscules de la chaîne en minuscule. | $A = "AbCdEf" $A.ToLower() abcdef |
.ToUpper() | Convertit toutes les minuscules de la chaîne en majuscule. | $A = "AbCdEf" $A.ToUpper() ABCDEF |
.Trim() | Supprime les espaces en début et à la fin de la chaîne mais pas ceux au milieu. | $A = " abc def " $B = "ghi" $A.Trim() + $B abc defghi |
.TrimEnd() | Supprime les espaces à la fin de la chaîne mais pas ceux du début ou au milieu. | $A = " abc def " $B = "ghi" $A.TrimEnd() + $B abc defghi |
.TrimStart() | Supprime les espaces au début de la chaîne mais pas ceux au milieu ou à la fin. | $A = " abc def " $B = "ghi" $A.TrimStart() + $B abc def ghi |
Les variables automatiques
Le système possèdent quelques variables utilisables par l'utilisateur mais seul le système définit leur contenu. En voici quelques-unes.
Référence : Microsoft
| Variable | Explication |
|---|---|
$$ | Contient le dernier jeton de la dernière ligne reçu dans la session. |
$? | État de la dernière commande exécuté. $true pour succès et $false pour échec. |
$^ | Contient le premier jeton de la dernière ligne reçu dans la session. |
$_ ou $PSITEM | Contient le dernier objet du pipeline. |
$ARGS | Contient les arguments passés à une fonction ou un script. |
$ERROR | Contient les informations du dernier échec. Ceci peut représenter plusieurs erreurs. |
$FALSE | Renvoie toujours le booléen faux. |
$HOME | Renvoie le chemin du dossier utilisateur. |
$HOST | Contient les informations de l'hôte de la session Powershell. |
$IsCoreCLR | Renvoie $true si la session Powershell s'exécute dans un environnement .NET Core. |
$IsLinux | Renvoie $true si la session Powershell s'exécute dans un environnement Linux. |
$IsMacOS | Renvoie $true si la session Powershell s'exécute dans un environnement MacOS. |
$IsWindows | Renvoie $true si la session Powershell s'exécute dans un environnement Windows. |
$LASTEXITCODE | Renvoie le dernier code de sortie. |
$NULL | Correspond à une variable sans contenu. On peut l'utiliser comme n'importe quelle variable mais aussi y envoyer les résultats d'une commande. Dans ce cas, la commande s'exécute correctement mais n'affiche aucun résultat. |
$PID | Renvoie l'identifiant du processus qui contient la session actuelle de Powershell. |
$PROFILE | Renvoie le chemin complet du profil Powershell de l'utilisateur. |
$PSHOME | Renvoie le chemin complet de l'exécutable powershell.exe. |
$PSVERSIONTABLE | Renvoie la version de Powershell. |
$PWD | Renvoie le chemin complet du dossier actuel. |
$TRUE | Renvoie toujours le booléen vrai. |
— Nicolas THOREZ 2019/02/22 19:08
Discussion