About If

SHORT DESCRIPTION

Describes a language command you can use to run statement lists based onthe results of one or more conditional tests.

LONG DESCRIPTION

You can use the If statement to run code blocks if a specified conditionaltest evaluates to true. You can also specify one or more additionalconditional tests to run if all the prior tests evaluate to false. Finally,you can specify an additional code block that is run if no other priorconditional test evaluates to true.

Syntax

The following example shows the If statement syntax:

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

When you run an If statement, PowerShell evaluates the <test1>conditional expression as true or false. If <test1> is true,<statement list 1> runs, and PowerShell exits the If statement. If<test1> is false, PowerShell evaluates the condition specified by the<test2> conditional statement.

If <test2> is true, <statement list 2> runs, and PowerShell exits theIf statement. If both <test1> and <test2> evaluate to false, the<statement list 3> code block runs, and PowerShell exits the Ifstatement.

You can use multiple Elseif statements to chain a series of conditionaltests. So, that each test is run only if all the previous tests are false.If you need to create an If statement that contains many Elseif statements,consider using a Switch statement instead.

Examples:

The simplest If statement contains a single command and does not containany Elseif statements or any Else statements. The following example showsthe simplest form of the If statement:

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

In this example, if the $a variable is greater than 2, the conditionevaluates to true, and the statement list runs. However, if $a is less thanor equal to 2 or is not an existing variable, the If statement does notdisplay a message.

By adding an Else statement, a message is displayed when $a is less than orequal to 2. As the next example shows:

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.")}

To further refine this example, you can use the Elseif statement to displaya message when the value of $a is equal to 2. As the next example shows:

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.")}

Using the ternary operator syntax

PowerShell 7.0 introduced a new syntax using the ternary operator. It follows the C# ternaryoperator syntax:

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

The ternary operator behaves like the simplified if-else statement. The <condition> expressionis evaluated and the result is converted to a boolean to determine which branch should be evaluatednext:

  • The <if-true> expression is executed if the <condition> expression is true
  • The <if-false> expression is executed if the <condition> expression is false

For example:

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

In this example, the value of $message is "Path exists" when Test-Path returns $true. WhenTest-Path returns $false, the value of $message is "Path not found".

SEE ALSO

about_Comparison_Operators

about_Switch