7-Variables et tableaux
Une variable commence toujours par un $
Le type est défini lors de chaque affectation, car le langage est non typé
On peut définir le type en ajoutant l’information devant la variable
[string]$toto=123
Dans ce cas les guillemets ne sont pas nécessaires
- Chaine de caractères:
Une variable peut être utilisée pour son nom ou pour son contenu
$a='Hello'
$b="World"
Write-Host '$a $b'
Write-Host "$a $b"
Il y a substitution avec des guillemets double
La substitution de la propriété d’un objet se fait avec $($objet.propriété)
- Here-String:
Chaine de caractères sur plusieurs lignes, qui peut être contenue entre des guillemets simples ou doubles
- Caractères d’échappement:
Le backtick ` ou guillemet inversé, correspond au \ du language C
Utilisé en fin de ligne indique que la commande continue sur la ligne suivante
Si l’on veut que la variable $a ne soit pas substituée, alors on utilise `$a
Le tableau ci-dessous indique les principaux caractères d’échappement
On trouve le type avec Get-Member ou GetType
$a | Get-Member
$a.GetType()
Get-Member -InputObject $a
- Variables spéciales:
Variables qui stockent des informations d’état (Automatic Variables)
$_ : contenu du pipe, utilisé avec Where-Object, Foreach-Object, Filter, …
$? : booléen sur le résultat de la dernière opération (Modifié par la dernière fonction avec exit0 : ok, exit1 : erreur ou exception : erreur bloquante pour l’exécution)
$Args : tableau des arguments passés à une fonction ou un script
$Error : tableau des erreurs, la dernière erreur sera donc $Error[0] et l’avant dernière $Error[1], pour effacer $Error.Clear
$Home : Répertoire de l’utilisateur
$Host : Informations sur l’hôte
$PWD : Chemin absolu du répertoire courant
- Constantes:
C’est une variable avec une valeur définie que l’on ne peut pas changer
- Opérateurs:
Arithmétiques : +, -, *, /, %, System.Math
Comparaison ne respectant pas la casse : -eq, -ne, -gt, -ge, -lt, -le
Comparaison respectant la casse : -ceq, -cne, -cgt, -cge, -clt, -cle
Logiques : -and, -or, -not (!), -xor
Binaires : -band, -bor, -bnot, -bxor
Redirection : >, >>, 2>&1, 2>, 2>>
Le fichier redirection.txt contient le texte
Le fichier error.txt contient le message d’erreur
Types : -is, -isnot
Affectation : +=, -=, *=, /=, %=, ++, - -
Regex : -match, -notmatch
Sur les strings : -Replace, -Split, -Join, -Like, -NotLike
- Tableaux à une dimension:
Déclaration d’un tableau vide
$tabVide=@()
Déclaration avec initialisation
$tab1=10,20,30,40,50
$tab2=1..10
$tab3=@(1,2,3,4)
Déclaration avec type forcé
[int[]]$tab9=9,99,999
[double[]]$tab5=@()
Accès à une valeur
$tab1[2]
Affiche 30
Accès à plusieurs valeurs
$tab9[0..2]
Affiche
Affiche le tableau
$tab3
Affiche
On peut aussi parcourir le tableau avec une boucle foreach ou for
Affiche la dernière valeur
$tab3[-1]
Ajout de valeur
$tab3+=5
Modification par changement de valeur
$tab3[0]=8
Suppression par reaffectation
$tab3=$tab3[0..2+4]
Affiche
Longeur du tableau
$tab1.Length
$tab1.Count
- Concaténation:
Différence pour caractères et string
- Tableau à plusieurs dimensions:
Déclaration avec initialisation
$tab11= (11,12,13),(21,22,23)
Accès à une ligne
$tab11[0]
Affiche 11 12 13
Accès aux lignes
Accès à une case
$tab11[0][1]
Affiche 12
- Tableaux associatifs:
Un tableau vide
$tabAssoVide={}
Attention : tableau @() et tableau associatif @{}
L’indice est une clé
$age=@{Toto=15; Titi=17; Tutu=14}
L’affichage utilise les propiétés des tableaux associatifs
Les propriétés Keys et Values permettent d’avoir la liste des noms ou des valeurs
Valeur associée pour une clé
$age['Tutu']
Affiche 14
Ajout
$age+=@{Tata=16}
- Exercices: