Question

[Solved] How do I negate a condition in PowerShell?

How do I negate a conditional test in PowerShell?

For example, if I want to check for the directory C:Code, I can run:

if (Test-Path C:Code){
  write "it exists!"
}

Is there a way to negate that condition, e.g. (non-working):

if (Not (Test-Path C:Code)){
  write "it doesn't exist!"
}

Workaround:

if (Test-Path C:Code){
}
else {
  write "it doesn't exist"
}

This works fine, but I’d prefer something inline.

Solution #1:

You almost had it with Not. It should be:

if (-Not (Test-Path C:Code)) {
    write "it doesn't exist!"
} 

You can also use !: if (!(Test-Path C:Code)){}

Just for fun, you could also use bitwise exclusive or, though it’s not the most readable/understandable method.

if ((test-path C:code) -bxor 1) {write "it doesn't exist!"}
Respondent: Rynant

Solution #2:

If you are like me and dislike the double parenthesis, you can use a function

function not ($cm, $pm) {
  if (& $cm $pm) {0} else {1}
}

if (not Test-Path C:Code) {'it does not exist!'}

Example

Respondent: Steven Penny

Solution #3:

Powershell also accept the C/C++/C* not operator

if ( !(Test-Path C:Code) ){ write “it doesn’t exist!” }

I use it often because I’m used to C*…
allows code compression/simplification…
I also find it more elegant…

Respondent: ZEE

Solution #4:

if you don’t like the double brackets or you don’t want to write a function, you can just use a variable.

$path = Test-Path C:Code
if (!$path) {
    write "it doesn't exist!"
}
Respondent: Melchior

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Most Popular

To Top
India and Pakistan’s steroid-soaked rhetoric over Kashmir will come back to haunt them both clenbuterol australia bossier man pleads guilty for leadership role in anabolic steriod distribution conspiracy