PowerShell Basics: If Statement

Introduction to The Windows PowerShell If Statement

PowerShell’s ‘If’ statement comes under the umbrella of flow control. Once you master the basic construction then you can increase its usefulness by appending, ‘Else’ and ‘ElseIf’ statements. One of my favourite alternative strategies is to use ‘Switch‘.

Topics for PowerShell’s If Statement

Construction of the PowerShell ‘If’ Statement

As with so many PowerShell constructions, the type of bracket signifies how to break the script into sections. It’s worth tattooing into our memory that (parenthesis brackets are for the first part, namely the condition), while {braces are for the block command}.

If (condition) {Do stuff}
# Another explanation would be
If (test) {
"Execute when true"
}

Summary: In PowerShell, ‘If’ executes statements conditional on the truth of the test expression.

Example 1a: Plain ‘If’

Learning Points

Note 1: Trace the above construction, and separate the two components: if (test) and {what to do}.

Note 2: Avoid over-think; there is no ‘Then’ in a PowerShell ‘If’ statement. My advice is that instead of worrying about ‘If Then’, pay close attention to the two types of bracket. Furthermore, there is no endif in PowerShell as there is in VBScript.

Note 3: To double check your understanding, try amending, “Bigger than Zero” to a different text string, such as: “Less than nought”. Once you have done that, set $Number to -1 in the above Example 1a.

Windows Management Instrumentation (WMI) is one of the hidden treasures of Microsoft’s operating systems. Fortunately, SolarWinds have created a Free WMI Monitor for PowerShell so that you can discover these gems of performance information, and thus improve your PowerShell scripts.

Take the guesswork out of which WMI counters to use when scripting the operating system, Active Directory, or Exchange Server. Give this WMI monitor a try – it’s free.

If Logic and Tactics

It’s rare that my first ‘If’ construction produces the desired results. The secret of success is to experiment with the If test, or alternatively start introducing one or more ‘ElseIf tests with their corresponding {outcome block}.

SolarWinds Network Performance Monitor (NPM) will help you discover what’s happening on your network. This utility will also guide you through troubleshooting; the dashboard will indicate whether the root cause is a broken link, faulty equipment or resource overload.

What I like best is the way NPM suggests solutions to network problems. Its also has the ability to monitor the health of individual VMware virtual machines. If you are interested in troubleshooting, and creating network maps, then I recommend that you try NPM on a 30-day free trial.

Example 1d: File Content Example of Plain ‘If’

PowerShell has a batch of help files. One of these files contains help about the ‘if’ statement. In the example below, $File references that file. $Content is set to the content of the file. The third line attempts to match a string to the contents of the file.

# Help on PowerShell's if statements
Clear-Host
$File = Get-Help about_if
If ($File -Match "The if Statement") {
"We have the correct help file"
}

Learning Points

The above example is concerned with matching a string “The if Statement” to the contents of the built in help file.

Example 2a: ‘If’ With ‘Else’

This example deal with plain ‘Else’. This is a simple command, unlike ElseIf there is no second test construction, ‘Else’ just follows on to reflect what to do if the If statement is false.

# Help on PowerShell's Else statements
$File = Get-Help about_if
If ($File -Match "The if Statement") {"We have the correct help file"}
Else {"The string is wrong"}

Learning Points

The best way to see how ‘else’ operates is to amend line 3 thus: ($File -Match “The ifyyyy Statement”).

This Engineer’s Toolset provides a comprehensive console of 50 utilities for troubleshooting computer problems. Guy says it helps me monitor what’s occurring on the network, and each tool teaches me more about how the underlying system operates.

There are so many good gadgets; it’s like having free rein of a sweetshop. Thankfully the utilities are displayed logically: monitoring, network discovery, diagnostic, and Cisco tools. Try the SolarWinds Engineer’s Toolset on a 14-day free trial now!

Learning Points

Note 12: The advantage of ElseIf over plain Else, is that we can introduce a new test. In the above example we use ElseIf to check if the length of the file is less than 1. To activate the ‘ElseIf’ block, set $File to a non-existent file for example$File = Get-Help about_ifxx

Import users from a spreadsheet. Just provide a list of the users with their fields in the top row, and save as .csv file. Then launch this FREE utility and match your fields with AD’s attributes, click and import the users.

Windows PowerShell evaluates the <test1> conditional expression as either true or false. Should the result be true, PowerShell obeys whatever is inside the {curly brackets}, whereupon PowerShell exits the If statement.

In the event of the first test being false PowerShell works its way through the ElseIf statements.

Incidentally, the ‘Vehicle’ for our tests reveals a whole family of ‘about_zyx…’ files. My point is there is no command: ‘Get-Help if’, however, there is a help file called, ‘about_if’. Furthermore, if you look in the PowerShell directory then you will see ‘About’ files to assist with commands such as ‘If’ and ‘ElseIf’. You can list these ‘About’ files with the command:

Summary of PowerShell’s If Construction

When it comes to filtering output, one of the oldest and best statements is the ‘If’ clause. As usual, the secret of understanding the syntax is to pay close attention to the style of bracket. If (parenthesis for the test) and {braces for the action}. Once you have mastered the basic ‘If’ statement, then extend your capabilities by researching ‘Else’ and ‘ElseIf’.