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

  • Tamper Protection Now Available to Microsoft Defender ATP Subscribers

    The Microsoft Defender Advanced Threat Protection (ATP) E5 subscription plan now has an optional "tamper protection" security feature, Microsoft announced on Monday.

  • Exploring OCR, a New Way To Get Data into Excel

    Microsoft recently added a new optical character recognition feature to Excel that lets users import data from a photograph taken from a smartphone. Here's how to use it.

  • Microsoft Authenticator App To Get Real-Time Phishing Protections

    Microsoft is working on adding capabilities to its Microsoft Authenticator app to help defeat security breaches enabled by advanced attack techniques, including phishing and man-in-the-middle methods.

  • A Quicker Way To Create Hyper-V Inventory Reports

    If you need to generate Hyper-V inventory reports but don't want the hassle of writing your own custom PowerShell script, here is a shortcut.

comments powered by Disqus

Office 365 Watch

Sign up for our newsletter.

Terms and Privacy Policy consent

I agree to this site's Privacy Policy.