Windows PowerShell

Guy recommends:
Free config generator

Solarwinds Config Generator

This CG will put you in charge of controlling changes to network routers and other SNMP devices.

Download your free Config Generator



Windows PowerShell - Conditional Operators

Introduction to PowerShell Conditional Operators

I think of PowerShell's conditional operators as filters.  Perhaps you are suffering from a common problem - too much information?  If so, then choosing the most suitable PowerShell operator: -match, -like or -contains will help you to distil the key information.

Introduction to: -match  -like and -contains.

-Match -like and -contains are all similar PowerShell conditional operators, yet each has a subtle specialization.  My advice is keep experimenting until you find the particular conditional operator that suits your circumstance. Have faith that you will be able to manipulate one of this trio, and thus achieve the degree of pattern matching that you seek. 

Topics for PowerShell's Conditional Operators

Also note, these operators are in addition to the ubiquitous comparison operators, -eq, 'If' and 'elseif'.

 ♣

Example 1 -Match Conditional Operator

The 'match' can be anywhere in the string.  Moreover, the pattern does not have to be a complete, and this is the biggest benefit of match.  -Match uses regular expressions for pattern matching.  Incidentally -match, and the other PowerShell conditional operators, all have a negative form, for example -notmatch.

Example 1a - Match does not have to be at the beginning

$Guy ="Guy Thomas 1949"
$Guy -match "Th"

# Result PS> True

Example 1b - Naturally a completely wrong name is no good

$Guy ="Guy Thomas 1949"
$Guy -match "Guido"

# Result PS> False

Example 1c - Wrong date

$Guy ="Guy Thomas 1949"
$Guy -match "1939"

# Result PS> False

Example 1d - Wildcard?  Rides to the rescue

$Guy ="Guy Thomas 1949"
$Guy -match "19?9"

# Result PS> True

Example 1e - WmiObject and Where, using * as a Wildcard

Here is a real-life -match example using WmiObject and a where clause, observer the Wildcard*.

Get-WmiObject -list | where {$_.name -match "cim*"}

Additional PowerShell Character Classes

A character class is a broader form of wildcard, which represents an entire group of characters.  You can use these for really wide-ranging searches.  PowerShell recognizes the following character classes:

\w matches any word character, meaning letters and numbers.
\s matches any white space character, such as tabs, spaces, and so forth.
\d matches any digit character.

There are also the reverse or negative versions which employ a capital letter.  (Can be hard to get a false with these!)

\W (capital W) any non-word character
\S any non-white space.
\D any non digit. 

Negative -notmatch

For negative conditions, there is an alternative form called -notmatch.  PowerShell also has ErrorAction silentlyContinue.

  ˚

Example 2 -Like Conditional Operator

With -like, both sides of the expression have to be the same, fortunately, you can employ the usual wildcards * and ?

Example 2a - Having only part of the string is no good for -like

$Guy ="Guy Thomas 1949"
$Guy -like "Th"

# Result PS> False

Example 2b - Just the start of the string not enough

$Guy ="Guy Thomas 1949"
$Guy -like "Guy"

# Result PS> False

Example 2c - Wildcard * is useful for -like

$Guy ="Guy Thomas 1949"
$Guy -like "Guy*"

Result PS> True

Example 2d - Wildcard*  but the rest has to be correct

$Guy ="Guy Thomas 1949"
$Guy -like "Gzkuy*"

# Result PS> False

Example 2e - * Wildcards *  Double wildcards are handy

$Guy ="Guy Thomas 1949"
$Guy -like "*Th*"

# Result PS> True

If your logic needs the negative, then try -notlike.  In addition,-like -and -notlike have variants that force case sensitivity. -clike and -cnotlike. 

Difference Between -like and -match

$Guy ="Guy Thomas 1949"
$Guy -like "Th*"

# Result PS> False

$Guy ="Guy Thomas 1949"
$Guy -match "Th*"

# Result PS> True

Guy Recommends: SolarWinds LANSurveyorSolarwinds LANSurveyor

LANSurveyor will produce a neat diagram of your network topology.  But that's just the start; LANSurveyor can create an inventory of the hardware and software of your machines and network devices.  Other neat features include dynamic update for when you add new devices to your network.  I also love the ability to export the diagrams to Microsoft Visio.

Finally, Guy bets that if you take a free trial of LANSurveyor then you will find a device on your network that you had forgotten about, or someone else installed without you realizing!

Download a Free Trial of LANSurveyor

Example 3 -Contains Conditional Operator

The conditional operator -contains is similar to -eq, except it returns 'True' or 'False'.  -contains is designed for situations where you have a collection and wish to test one particular item.

Example 3a - Checks each item between the commas

# PowerShell -Contains
$name = "Guy Thomas", "Alicia Moss", "Jennifer Jones"
$name -contains "Alicia Moss"

# Result PS> True

Example 3b  -Contains requires exact equality

# PowerShell -Contains
$name = "Guy Thomas", "Alicia Moss", "Jennifer Jones"
$name -contains "Jones"

# Result PS> False

Example 3c - Wildcards are a waste of time with -contains

# PowerShell -Contains
$name = "Guy Thomas", "Alicia Moss", "Jennifer Jones"
$name -contains "*Jones"

# Result PS> False

About_Comparison_Operators

# For even more information try:

help About_Comparison_Operators

Summary of PowerShell Conditional Operators

So often we suffer from information overload. Working with PowerShell is no different, however it does supply three conditional operators to filter your information: -match, -like and –contains.  Each operator has different properties; with research, you can get just the filter you need, and thus filter the desired stream of information into your script’s output.

See more Windows PowerShell examples

PowerShell Home  • If Statement  • Conditional Operators  • Switch  • Loops  • Brackets

Comparison operators  • -Match  • Where Filter

Please write in if you have a better example script. Also please report any factual mistakes, grammatical errors or broken links, I will be happy to correct the fault.

Download my ebook:Getting Started with PowerShell
Getting Started with PowerShell - only $9.25

You get 36 topics organized into these 3 sections:
   1) Getting Started
   2) Real-life tasks
   3) Examples of Syntax.

In addition to the ebook, you get a PDF version of this  Introduction to PowerShell ebook  It runs to 120 pages of A4.

 *


Google

WebThis Site

Guy Recommends: WMI Monitor and It's Free!Solarwinds WMI Monitor

Windows Management Instrumentation (WMI) is one of the hidden treasures of Microsoft operating systems.

Fortunately, Solarwinds have created the WMI Monitor so that you can examine these gems of performance information for free.  Take the guess work out of which WMI counters to use for applications like Microsoft Active Directory, SQL or Exchange Server.

Download your free copy of WMI Monitor

 

Home Copyright © 1999-2010 Computer Performance LTD All rights reserved

Please report a broken link, or an error.