Powershell 101: IF .. Else
Originally Posted here: https://blogs.flaphead.dns2go.com/archive/2006/08/14/3509.aspx
Okay as a beginner this took a bit of time to perfect so here goes. For some of you hardened programmers this might be a bit basic, but I had to start somewhere. My background is cmd and vbs files with some html chucked in, so this syntax is new to me
Simple IF, Else
$a = "Powershell"
IF ($a -eq "PowerShell")
{
"Statement is True"
}
ELSE
{
"Statement is False"
}
You can condence this to:
$a = "Powershell"
IF ($a -eq "PowerShell"){ "Statement is True"} ELSE { "Statement is False"}
Now if you want to check for a NULL then it gets fun
$b = “Hello”
IF ($b -eq $NULL)
{
"B is NULL"
}
ELSE
{
"B is NOT NULL"
}
So you have whole load of conditional statement like these:
Operator |
Definition |
-lt |
Less than |
-le |
Less than or equal to |
-gt |
Greater than |
-ge |
Greater than or equal to |
-eq |
Equal to. If the left hand side of the operator is an array and the right hand side is a scalar, the equivalent values of the left hand side will be returned |
-ne |
Not Equal to. If the left hand side of the operator is an array and the right hand side is a scalar, the not equivalent values of the left hand side will be returned |
-contains |
Determine elements in a group, this always returns Boolean $True or $False. |
-notcontains |
Determine excluded elements in a group, this always returns Boolean $True or $False. |
-like |
Like - uses wildcards for pattern matching |
-notlike |
Not Like - uses wildcards for pattern matching |
-match |
Match - uses regular expressions for pattern matching |
-notmatch |
Not Match - uses regular expressions for pattern matching |
-band |
Bitwise AND |
-bor |
Bitwise OR |
-is |
Is of Type |
-isnot |
Is not of Type |
These operators are the case-sensitive counterparts:
| ||
Other operators:
Operator |
Definition |
+ |
Add |
- |
Subtract |
* |
Multiply |
/ |
Divide |
% |
Modulo |
-not |
logical not |
! |
logical not |
-band |
binary and |
-bor |
binary or |
-bnot |
binary not |
-replace |
Replace (e.g. "abcde" –replace "b","B") (case insensitive) |
-ireplace |
Case-insensitive replace (e.g. "abcde" –ireplace "B","3") |
-creplace |
Case-sensitive replace (e.g. "abcde" –creplace "B","3") |
-and |
AND (e.g. ($a -ge 5 -AND $a -le 15) ) |
-or |
OR (e.g. ($a –eq "A" –OR $a –eq "B") ) |
-is |
IS type (e.g. $a -is [int] ) |
-isnot |
IS not type (e.g. $a -isnot [int] ) |
-as |
convert to type (e.g. 1 -as [string] treats 1 as a string ) |
.. |
Range operator (e.g. foreach ($i in 1..10) {$i } ) |
& |
call operator (e.g. $a = "Get-ChildItem" & $a executes Get-ChildItem) |
. (dot followed by a space) |
call operator (e.g. $a = "Get-ChildItem" . $a executes Get-ChildItem in the current scope) |
-F |
Format operator (e.g. foreach ($p in Get-Process) { "{0,-15} has {1,6} handles" –F $p.processname,$p.Handlecount } ) |