Prof. Powershell

Lessons in Logic (IGNORE THIS)

How to use an IF construct in a PowerShell script.

If you've done any sort of scripting, you've likely used logic constructs like IF, THEN and ELSE. PowerShell can also use these logic constructs, and I'll introduce some of them to you here. But don't think you need a script to use them-you can use these constructs directly in the console. Let's look at an IF construct. In PowerShell, this is the minimum syntax:

PS C:\> if (5 -gt 2) {write-host "bigger"}
bigger

Notice that there's no THEN and no END IF. The IF keyword evaluates the expression in parentheses and, if TRUE, executes whatever commands are enclosed in the curly braces. In this example, the word "bigger" is written to the console. Also, in this example, if the expression evaluated FALSE, you wouldn't get anything.

Here's where you can add an ELSE clause:

PS C:\> $x=5
PS C:\> if ($x -gt 2) {write-host "X is bigger"} else {write-host "X 
is smaller"}
X is bigger

If the expression is TRUE, then the first script block is executed; otherwise, the second script block is executed. You can also perform secondary comparisons using an ELSEIF clause:

PS C:\> $x=5
PS C:\> if ($x -gt 10) {write-host "X is bigger"} elseif ($x -ge 5) 
{write-host "X is in the middle"} else {write-host "X is smaller"}
X is in the middle

In this example, I'm evaluating three conditions:

  • If $x is greater than 10, then the first script block is executed.
  • Otherwise (ELSEIF), if $x is greater or equal than 5, then the second script block is executed.
  • If neither is TRUE, the last script block is executed.

Remember that PowerShell will only execute the script block for the first expression that evaluates TRUE.

PowerShell doesn't care about the formatting and spacing of the braces, so you can write it as one line in the console (though in a script you'll likely write it like this):

if ($x -gt 10) 
{
  write-host "X is bigger"
}
  elseif ($x -ge 5) 
{
  write-host "X is in the middle"
} 
else 
{
  write-host "X is smaller"
}

This format makes it easier to understand, especially if you have multiple ELSEIF clauses.

About the Author

Jeffery Hicks is an IT veteran with over 25 years of experience, much of it spent as an IT infrastructure consultant specializing in Microsoft server technologies with an emphasis in automation and efficiency. He is a multi-year recipient of the Microsoft MVP Award in Windows PowerShell. He works today as an independent author, trainer and consultant. Jeff has written for numerous online sites and print publications, is a contributing editor at Petri.com, and a frequent speaker at technology conferences and user groups.

Featured

  • Microsoft and SAP Enhance Partnership with Teams Integration

    Microsoft and SAP this week described continuing partnership efforts on Microsoft Azure, while also planning a Microsoft Teams integration with SAP's enterprise resource planning product and other solutions.

  • Blue Squares Graphic

    Microsoft Previews Azure IoT Edge for Linux on Windows

    Microsoft announced a preview of Azure IoT Edge for Linux on Windows, which lets organizations tap Linux virtual machine processes that also work with Windows- and Azure-based processes and services.

  • How To Automate Tasks in Azure SQL Database

    Knowing how to automate tasks in the cloud will make you a more productive DBA. Here are the key concepts to understand about cloud scripting and a rundown of the best tools for automating code in Azure.

  • Microsoft Open License To End Next Year for Government and Education Groups

    Microsoft's "Open License program" will end on Jan. 1, 2022, and not just for commercial customers, but also for government, education and nonprofit organizations.

comments powered by Disqus