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

../_images/Capt-aff-%24a%24b.PNG

La substitution de la propriété d’un objet se fait avec $($objet.propriété)

../_images/Capt-propriete-objet.PNG
Here-String:

Chaine de caractères sur plusieurs lignes, qui peut être contenue entre des guillemets simples ou doubles

../_images/Capt-Here-String.PNG
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

../_images/Capt-car-echappement.PNG

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

../_images/Capt-set-const.PNG
Opérateurs:

  • Arithmétiques : +, -, *, /, %, System.Math

../_images/Capt-exemple-modulo.PNG
  • Comparaison ne respectant pas la casse : -eq, -ne, -gt, -ge, -lt, -le

  • Comparaison respectant la casse : -ceq, -cne, -cgt, -cge, -clt, -cle

../_images/Capt-exemple-eq.PNG
  • Logiques : -and, -or, -not (!), -xor

../_images/Capt-exemple-and.PNG
  • Binaires : -band, -bor, -bnot, -bxor

../_images/Capt-exemple-band.PNG
  • Redirection : >, >>, 2>&1, 2>, 2>>

../_images/Capt-exemple-redirection.PNG

Le fichier redirection.txt contient le texte

../_images/Capt-exemple-redirection-error.PNG

Le fichier error.txt contient le message d’erreur

  • Types : -is, -isnot

../_images/Capt-exemple-is.PNG
  • Affectation : +=, -=, *=, /=, %=, ++, - -

../_images/Capt-exemple-%2B%3D.PNG
  • Regex : -match, -notmatch

../_images/Capt-exemple-match.PNG
  • Sur les strings : -Replace, -Split, -Join, -Like, -NotLike

../_images/Capt-exemple-like.PNG
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

../_images/Capt-affichage-tab9.PNG

Affiche le tableau

$tab3

Affiche

../_images/Capt-affichage-tab3.PNG

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

../_images/Capt-suppression-tab3.PNG

Longeur du tableau

$tab1.Length
$tab1.Count
Concaténation:

Différence pour caractères et string

../_images/Capt-concat-car-string.PNG
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

../_images/Capt-affichage-lignes-tab11.PNG

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

../_images/Capt-affichage-tab-age.PNG

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: