web-dev-qa-db-fra.com

Comment annuler une condition dans PowerShell?

Comment annuler un test conditionnel dans PowerShell?

Par exemple, si je veux vérifier le répertoire C:\Code, je peux exécuter:

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

Existe-t-il un moyen d’annuler cette condition, par exemple (ne fonctionne pas):

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

Solution de contournement:

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

Cela fonctionne bien, mais je préférerais quelque chose en ligne.

243
Ben McCormack

Vous l'avez presque eu avec Not. CA devrait etre:

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

Vous pouvez également utiliser !: if (!(Test-Path C:\Code)){}

Juste pour le plaisir, vous pouvez également utiliser une exclusivité au niveau du bit ou, bien que ce ne soit pas la méthode la plus lisible/compréhensible.

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

Si vous êtes comme moi et n’aimez pas la double parenthèse, vous pouvez utiliser une fonction

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

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

Exemple

9
Steven Penny

Powershell accepte également les opérateurs C/C++/C * et non

if (! (Test-Path C:\Code)) {écrire "ça n'existe pas!" }

Je l'utilise souvent parce que je suis habitué à C * ... permet la compression/simplification de code ... je le trouve aussi plus élégant ...

1
ZEE