Affichage des articles dont le libellé est If. Afficher tous les articles
Affichage des articles dont le libellé est If. Afficher tous les articles

mardi 27 novembre 2012

Généralités PowerShell.

Nous allons commencer doucement avec des généralités sur la programmation en PowerShell. Actuellement je travail avec du PowerShell v2 et l’éditeur PowerShell_ISE qui vient avec. Il y a certainement mieux comme éditeur, mais au moins celui est gratuit et je commence a bien connaitre ses petits défauts.

Les commentaires

#Tout ce qui est derrière un caractère "#" est en commentaire.

Les variables

$myvar1
$global:myvar2
La variable local utilise le préfixe $ suivi du nom de la variable.
La variable globale  utilise le préfixe $global: suivi du nom de la variable.
A moins de maitriser la portée des variables comme un dieu, je déconseille d'utiliser le même nom pour une variable globale et une variable locale.

Affectations

$a = 5
$c = "test"
En général je ne déclare pas les types de variables. C'est fait automatique lors de la première affectation.

Auto Incrémentation

$a++
$a--
On ajoute "++" derrière la variable pour ajouter 1, et "--" pour soustraire 1.

Tableaux

Une dimension :
$t = @()       #Déclaration.
$t += ,@(5)    #Ajoute un élément valant 5 au tableau.
$a = $t[0]     #Affecte la premier valeur du tableau à la variable $a.
$t[0] = 10     #Change la valeur du premier élément du tableau.

Deux dimensions :
$t = @()          #Déclaration.
$t += ,@(1,2,3)   #Ajoute une ligne de 3 éléments au tableau.
$t += ,@(4,5,6)   #Ajoute une ligne de 3 éléments au tableau.
$t += ,@(7,8,9)   #Ajoute une ligne de 3 éléments au tableau.
$a = $t[0][2]     #Affecte la valeur du 3éme élément de la 1er ligne à $a.
$t[1][0] = 10     #Change la valeur du 1ère élément de la 2ème ligne.

Autre méthode* pour un tableau à deux dimensions :
$t = New-Object System.Collections.Generic.List[object]    #Déclaration.
$o = New-Object Psobject -Property @{ label0=1; label1=2}  #Nouvelle ligne.
$t.Add($o)          #Ajoute la ligne au tableau.
$o = New-Object Psobject -Property @{ label0=3; label1=4}  #Nouvelle ligne.
$t.Add($o)          #Ajoute la ligne au tableau.
$o = New-Object Psobject -Property @{ label0=5; label1=6}  #Nouvelle ligne.
$t.Add($o)          #Ajoute la ligne au tableau.
$a = $t[0].label1   #Affecte la valeur du 2ème élément de la 1er ligne à $a.
$t[1].label0 = 11   #Change la valeur du 1re élément de la 2ème ligne du tableau.
*Note : Cette méthode est bien plus rapide pour la création de tableau contenant plus de 20000 éléments. Étrangement, l'utilisation de la fonction "$t += ,@()" est de plus en plus lente au fur et à mesure que le nombre d'éléments augmente. Alors que l'utilisation du "System.Collection" comme tableau permet de garder une vitesse constante quelques soit le nombre d'éléments présent. 
 
Condition IF

$a = 5
$b = 10
if ($a -gt $b)
  {
    Write-Host "A"
  }
 else
  {
    Write-Host "B"
  }
 Les opérateurs les plus utilisés sont :
  -eq pour "égale"
  -ne pour "non égale"
  -gt pour "plus grand que"
  -lt pour "plus petit que"

Condition SWITCH

$test = 5
switch ($test)
  {
          0 { Write-Host "test est égale à 0." }
          #...
          5 { Write-Host "test est égale à 5." }

    default { Write-Host "Valeur non trouvée." }
  }

Boucles

Foreach :
$t = 0,1,2,3,4,5,6,7  #Tableau à 1 dimension de 8 éléments
foreach ($e in $t)
 {
   Write-Host $e
 }

While :
$i = 0
while ($i -ne 10)
 {
   Write-Host $i
   $i++
 }

For :
for($i=0;$i -le 10;$i++)
  {
    write-host $i
  }

Fonction

Déclaration :
function Toto($A,$B)
 {
   Write-Host $A
   Write-Host $B
 }

Appel :
Toto "Text A" "Text B"