[windows] 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.

This question is related to windows powershell

The answer is


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


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!"
}

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...