Les bases de PowerShell
Aide Mémoire PowerShell
Séquences d’échappement
Le caractère d’échappement Windows PowerShell est l’accent grave (`). Pour rendre un caractère littéral, faites-le précéder de `.
Séquences d’échappement spéciales
| Caratères d'échappement | Résultat |
|---|---|
| `n | Nouvelle ligne |
| `r | Retour chariot |
| `t | Tabulation |
| `a | Alarm |
| `b | Backspace |
| `' | Guillemet simple |
| `" | Guillemet double |
| `0 | Null |
| `` | Backtick |
Méthodes de traitement d’objets
Ces méthodes permettent de traiter des objets. Par exemple scinder un chaine de caractère.
$file = "fichier.txt" $file.Split(".")[-1] txt |
Ou moins utile, compter le nombre de « l » dans « Hello ».
("Hello").IndexOf("l") 2 |
Méthodes pour le traitement d’objets.
| Function | Description | Example |
|---|---|---|
| CompareTo() | Compare une chaine avec une autre | ("Hello").CompareTo("Hello") |
| Contains() | Retourne "True" si la cahine de compairaison spécifié est présent dans une chaine ou si la chaine de comparaison est vide | ("Hello").Contains("ll") |
| CopyTo() | Copie une partie d'une chaine dans une autre | ("User!").CopyTo(0, $a, 6, 5) |
| EndsWith() | Test si la chaine termine avec la chaine spécifié | ("Hello").EndsWith("lo") |
| Equals() | Test si une chaine est identique à une autre chaine | ("Hello").Equals($a) |
| IndexOf() | Retourne l'index de la première occurrence de la chaine de comparaison | ("Hello").IndexOf("l") |
| IndexOfAny() | Retourne l'index de la première occurrence de la chaine de comparaisonReturns the index of the first occurrence of any character in a comparison string | ("Hello").IndexOfAny("loe") |
| Insert() | Insert une chaine à l'index spécifié d'une autre chaine | ("Hello World").Insert(6, "brave ") |
| GetEnumerator() | Récupère un objet qui peut énumérer tous les caractères d'une chaîne | ("Hello").GetEnumerator() |
| LastIndexOf() | Recherche l'index de la dernière occurrence d'un caractère spécifié | ("Hello").LastIndexOf("l") |
| LastIndexOfAny() | Recherche l'index de la dernière occurrence d'un caractère d'une chaîne spécifiée | ("Hello").LastIndexOfAny("loe") |
| PadLeft() | Remplissage d'une chaîne à une longueur déterminée et qui ajoute des caractères blancs à gauche (aligné à droite de chaîne) | ("Hello").PadLeft(10) |
| PadRight() | Remplissage d'une chaîne à une longueur déterminée et qui ajoute des caractères blancs à droite (aligné à gauche de chaîne) | ("Hello").PadRight(10) + "World!" |
| Remove() | Supprime le nombre requis de caractères à partir d'une position spécifiée | ("Hello World").Remove(5,6) |
| Replace() | Remplace un caractère par un autre caractère | ("Hello World").Replace("l", "x") |
| Split() | Convertit une chaîne avec des points de séparation spécifiés dans un tableau | ("Hello World").Split("l") |
| StartsWith() | Test si une chaîne commence par un caractère spécifié | ("Hello World").StartsWith("He") |
| Substring() | Extrait les caractères d'une chaîne | ("Hello World").Substring(4, 3) |
| ToCharArray() | Convertit une chaîne en un tableau de caractères | ("Hello World").toCharArray() |
| ToLower() | Convertit une chaîne en minuscules | ("Hello World").toLower() |
| ToLowerInvariant() | Convertit une chaîne en minuscules à l'aide des règles de casse de la langue invariant | ("Hello World").toLowerInvariant() |
| ToUpper() | Convertit une chaîne en majuscules | ("Hello World").toUpper() |
| ToUpperInvariant() | Convertit une chaîne en majuscules à l'aide des règles de casse de la langue invariant | ("Hello World").ToUpperInvariant() |
| Trim() | Supprime les caractères en blanc à droite et à gauche | (" Hello ").Trim() + "World" |
| TrimEnd() | Supprime les caractères vide à droite | (" Hello ").TrimEnd() + "World" |
| TrimStart() | Supprime les caractères en blanc à la gauche | (" Hello ").TrimStart() + "World" |
| Chars() | Fournit un caractère à la position spécifiée | ("Hello").Chars(0) |
Variables automatiques
| Variable | Description |
|---|---|
| $$ | Dernier jeton de la ligne de commande précédente |
| $? | État booléen de la dernière commande |
| $^ | Premier jeton de la ligne de commande précédente |
| $_ | Objet de pipeline actif |
| $Args | Arguments passés à un script ou à une fonction |
| $Error | Tableau d’erreurs de commandes précédentes |
| $Foreach | Référence à l’énumérateur d’une boucle foreach |
| $Home | Répertoire de base de l’utilisateur ; généralement défini sur %HOMEDRIVE%%HOMEPATH% |
| $Host | Référence à l’application qui héberge le langage POWERSHELL |
| $Input | Énumérateur des objets dirigés vers un script |
| $LastExitCode | Code de sortie du dernier programme ou script |
| $Matches | Table de hachage des correspondances trouvées avec l’opérateur de correspondance – |
| $PSHome | Emplacement d’installation de Windows PowerShell |
| $profile | Profil standard (peut ne pas être présent) |
| $StackTrace | Dernière exception interceptée par Windows PowerShell |
| $Switch | Énumérateur d’une instruction switch |
Chaînes
L’utilisation des guillemets simple ou double a son importance avec PowerShell. Elles permettent de résoudre ou non des opérations arithmétiques.
$resultat = 'Le resultat est : $(5+3)' $resultat Le resultat est : $(5+3) $resultat = "Le resultat est : $(5+3)" $resultat Le resultat est : 8 |
Elles permettent de résoudre où non les variables.
$res = $(5+3) $resultat = 'Le resultat est : $res' $resultat Le resultat est : $res $resultat = "Le resultat est : $res" $resultat Le resultat est : 8 |
Elles autorisent l’insertion des caractères spéciaux grâces aux caractères d’échappement.
"Inserer une tabulation entre A et B: A`tB"
Inserer une tabulation entre A et B: A B |
Opérateurs de chaîne Les opérateurs de chaines vous permettent de manipuler des chaines de caractères.
"Bonjour Christophe" -Replace "Christophe","Sébastien" |
Voici la liste des opérateurs disponibles.
| Opérateur | Description | Exemple |
|---|---|---|
| * | Répète une chaine | "-" * 20 |
| + | Concatène des chaines | "Bonjour " + "Pierre" |
| -replace | Remplace une chaine (Insensible à la case) | "Bonjour Pierre" -replace "Pierre","Paul" |
| -creplace | Remplace une chaine (Sensible à la case) | "Bonjour Pierre" -replace "pierre","paul" |
| -eq | Vérifie l'égalité (Insensible à la case) | "Pierre" -eq "pierre" |
| -ceq | Vérifie l'égalité (Sensible à la case) | "Pierre" -ceq "pierre" |
| -like | Vérifie qu'une chaine contient une autre chaine (Insensible à la case, Accept *) | "Pierre" -like "Pier*" |
| -clike | Vérifie qu'une chaine contient une autre chaine (Sensible à la case, Accept *) | "Pierre" -clike "Pier*" |
| -notlike | Vérifie qu'une chaine ne contient pas une autre chaine (Insensible à la case, Accept *) | "Pierre" -notlike "Pier*" |
| -cnotlike | Vérifie qu'une chaine contient une autre chaine (Insensible à la case, Accept *) | "Pierre" -cnotlike "Pier*" |
| -match | Vérifie qu'une chaine contient une autre chaine (Insensible à la case) | "Pierre" -match "rr" |
| -cmatch | Vérifie qu'une chaine contient une autre chaine (Sensible à la case) | "Pierre" -cmatch "rr" |
| -notmatch | Vérifie qu'une chaine ne contient pas une autre chaine (Insensible à la case) | "Pierre" -notmatch "rr" |
| -cnotmatch | Vérifie qu'une chaine contient une autre chaine (Insensible à la case) | "Pierre" -cnotmatch "rr" |
Switch
$lang représente la valeur actuelle évaluée. Si un tableau est utilisé dans switch, chaque élément du tableau est testé.
$lang = (Get-WmiObject Win32_OperatingSystem -ComputerName SERVER001).oslanguage $switch = switch ($lang) ` { 1033 {"English"}; 1036 {"French"}; default {"Unknown"} } $switch |
Conditions (If, Else, ElseIf)
L’instruction « If » est peut-être la plus fondamental des options de contrôle disponibles dans PowerShell.
Si l’expression est évaluée à $True alors le script présent dans le corps de l’instruction est exécutée. Si l’expression est évaluée à $False le code dans le corps de la déclaration est sautée.
$r = Read-Host if ($r -eq "10"){ "Le nombre est 10." } |
La variation « Esle » de l’instruction « If » nous permet également de spécifier du code à exécuter si l’expression dans l’instruction « If » est évaluée à $False.
$r = Read-Host if ($r -eq "10"){ "Le nombre est 10." } else { "Le nombre n'est pas 10." } |
Enfin, il est parfois nécessaire de prendre des décisions fondées sur un certain nombre de critères différents. Il est alors nécessaire d’utiliser le « If » et « Elseif ».
$r = Read-Host if ($r -eq "10"){ "Le nombre est 10." } elseif ($r -eq "5"){ "Le nombre est 5." } else { "Le nombre n'est ni 5 ni 10." } |
Boucles (Foreach-Object)
L’utilisation de la cmdlet Foreach-Object ou de son alias Foreach permet de parcourir les valeurs d’un collection et par chacune, exécuter un instruction.
$valeurs = 1,2,3,4,5 Foreach($valeur in $valeurs){ "Le chiffre est $valeur"} |
Foreach peut suivre un pipe, il permet alors d’utilisé les valeurs issues de la commande précédent le pipe.
(1..10) | Foreach {"Le chiffre est $_"} |
Opérateurs logiques
Les opérateurs logiques permettent de vérifier plusieurs comparaisons dans le même expression.
$r = 5 ($r -gt 2) -and ($r -lt 8) True |
Les opérateurs logiques disponibles sont
| Opérateur | Signification |
|---|---|
| -and | Et logique |
| -or | Ou logique |
| -xor | Ou exclusif |
| -not | Non logique |
| ! | Non logique |
