Prof. Powershell

Lessons in Logic

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

  • What Does Office 365 Support for New Surface Hardware Actually Mean?

    Microsoft has spilled a lot of ink touting the ways that its new Surface-branded peripherals will be bring Office 365 features to life.

  • Azure Active Directory ID Protection 'Refresh' Now Available

    Microsoft's enhancements to the Azure Active Directory Identity Protection service are now said to be "generally available" (GA), or ready for commercial use, per a Wednesday announcement.

  • Microsoft Releases Windows 10 Version 1909

    Microsoft on Tuesday announced the release of Windows 10 version 1909, a new operating system product that's also known as the "Windows 10 November 2019 Update."

  • November Microsoft Security Bundle Addresses 75 Vulnerabilities

    Of that number, 13 vulnerabilities are rated "Critical" to patch, while 62 vulnerabilities are deemed "Important."

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.