about_If

Brève description

Décrit une commande de langage que vous pouvez utiliser pour exécuter des listes d’instructions en fonction des résultats d’un ou plusieurs tests conditionnels.

Description longue

Vous pouvez utiliser l’instruction If pour exécuter des blocs de code si un test conditionnel spécifié a la valeur true. Vous pouvez également spécifier un ou plusieurs tests conditionnels supplémentaires à exécuter si tous les tests précédents ont la valeur false. Enfin, vous pouvez spécifier un bloc de code supplémentaire qui est exécuté si aucun autre test conditionnel antérieur n’est évalué à true.

Syntaxe

L’exemple suivant montre la syntaxe de l’instruction If :

if (<test1>)
    {<statement list 1>}
[elseif (<test2>)
    {<statement list 2>}]
[else
    {<statement list 3>}]

Lorsque vous exécutez une instruction If, PowerShell évalue l’expression conditionnelle <test1> true ou false. Si <test1> a la valeur true, <statement list 1> s’exécute et PowerShell quitte l’instruction If. Si <test1> a la valeur false, PowerShell évalue la condition spécifiée par l’instruction conditionnelle <test2>.

Pour plus d’informations sur l’évaluation booléenne, consultez about_Booleans.

Si <test2> a la valeur true, <statement list 2> s’exécute et PowerShell quitte l’instruction If. Si both <test1> et <test2> evaluate a la valeur false, le bloc de code s’exécute <statement list 3> et PowerShell quitte l’instruction If.

Vous pouvez utiliser plusieurs instructions Elseif pour chaîner une série de tests conditionnels. Ainsi, chaque test n’est exécuté que si tous les tests précédents sont faux. Si vous devez créer une instruction If qui contient de nombreuses instructions Elseif, envisagez plutôt d’utiliser une instruction Switch.

Exemples:

L’instruction la plus If simple contient une seule commande et ne contient pas d’instructions Elseif ou Else. L’exemple suivant montre la forme la plus simple de l’instruction If :

if ($a -gt 2) {
    Write-Host "The value $a is greater than 2."
}

Dans cet exemple, si la variable $a est supérieure à 2, la condition est évaluée comme vraie et la liste d’instructions s’exécute. Toutefois, si $a est inférieur ou égal à 2 ou s’il n’est pas une variable existante, l’instruction n’affiche If pas de message.

En ajoutant une instruction Else, un message s’affiche lorsque $a est inférieur ou égal à 2. Comme l’illustre l’exemple suivant :

if ($a -gt 2) {
    Write-Host "The value $a is greater than 2."
}
else {
    Write-Host ("The value $a is less than or equal to 2," +
        " is not created or is not initialized.")
}

Pour affiner davantage cet exemple, vous pouvez utiliser l’instruction Elseif pour afficher un message lorsque la valeur de $a est égale à 2. Comme l’illustre l’exemple suivant :

if ($a -gt 2) {
    Write-Host "The value $a is greater than 2."
}
elseif ($a -eq 2) {
    Write-Host "The value $a is equal to 2."
}
else {
    Write-Host ("The value $a is less than 2 or" +
        " was not created or initialized.")
}

Utilisation de la syntaxe de l’opérateur ternaire

PowerShell 7.0 a introduit une nouvelle syntaxe à l’aide de l’opérateur ternaire. Il suit la syntaxe de l’opérateur ternaire C# :

<condition> ? <if-true> : <if-false>

L’opérateur ternaire se comporte comme l’instruction if-else simplifiée. L’expression <condition> est évaluée et le résultat est converti en booléen pour déterminer quelle branche doit être évaluée suivante :

  • L’expression <if-true> est exécutée si l’expression <condition> a la valeur true
  • L’expression <if-false> est exécutée si l’expression <condition> a la valeur false

Par exemple:

$message = (Test-Path $path) ? "Path exists" : "Path not found"

Dans cet exemple, la valeur de $message est « Le chemin existe » lorsque renvoie Test-Path$true. Lorsque Test-Path renvoie $false, la valeur de $message est « Chemin introuvable ».

$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)

Dans cet exemple, si le service est en cours d’exécution, il est arrêté et si son état n’est pas En cours d’exécution, il est démarré.

Voir aussi