Как отключить условие в PowerShell?

Как отменить условный тест в PowerShell?

Например, если я хочу проверить каталог C:\Code, я могу запустить:

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

Есть ли способ отменить это условие, например. (Нерабочий):

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

Обход

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

Это отлично работает, но я бы предпочел что-то встроенное.

Ответ 1

У вас почти было это с Not. Это должно быть:

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

Вы также можете использовать !: if (!(Test-Path C:\Code)){}

Просто для удовольствия вы также можете использовать побитовое исключение или, хотя это не самый читаемый/понятный метод.

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

Ответ 2

Если вы похожи на меня и не любите двойную скобку, вы можете использовать функцию

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

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

Пример

Ответ 3

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

Ответ 4

Powershell также принимает оператор C/C++/C *, а не оператор

if (! (Test-Path C:\Code)) {напишите "его не существует!" }

Я использую его часто, потому что я привык к C *... позволяет сжатие/упрощение кода... Я также нахожу это более элегантным...