.. ================================================== .. FOR YOUR INFORMATION .. -------------------------------------------------- .. -*- coding: utf-8 -*- with BOM. ======================= 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 .. image:: Capt-aff-$a$b.PNG La substitution de la propriété d'un objet se fait avec **$($objet.propriété)** .. image:: Capt-propriete-objet.PNG :Here-String: Chaine de caractères sur plusieurs lignes, qui peut être contenue entre des guillemets simples ou doubles .. image:: 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 .. image:: 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 .. image:: Capt-set-const.PNG :Opérateurs: * Arithmétiques : **+, -, *, /, %, System.Math** .. image:: 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** .. image:: Capt-exemple-eq.PNG * Logiques : **-and, -or, -not (!), -xor** .. image:: Capt-exemple-and.PNG * Binaires : **-band, -bor, -bnot, -bxor** .. image:: Capt-exemple-band.PNG * Redirection : **>, >>, 2>&1, 2>, 2>>** .. image:: Capt-exemple-redirection.PNG Le fichier redirection.txt contient le texte .. image:: Capt-exemple-redirection-error.PNG Le fichier error.txt contient le message d'erreur * Types : **-is, -isnot** .. image:: Capt-exemple-is.PNG * Affectation : **+=, -=, *=, /=, %=, ++, - -** .. image:: Capt-exemple-+=.PNG * Regex : **-match, -notmatch** .. image:: Capt-exemple-match.PNG * Sur les strings : **-Replace, -Split, -Join, -Like, -NotLike** .. image:: 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 .. image:: Capt-affichage-tab9.PNG Affiche le tableau :: $tab3 Affiche .. image:: 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 .. image:: Capt-suppression-tab3.PNG Longeur du tableau :: $tab1.Length $tab1.Count :Concaténation: Différence pour caractères et string .. image:: 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 .. image:: 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 .. image:: 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: * :download:`Exo Variables et Tableaux <../Exercices/E-122-7-VariablesTableaux.pdf>`