Comment puis-je 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 courir:

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

Existe-t-il un moyen de nier cette condition, par exemple (non-travail):

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.

203
demandé sur Peter Mortensen 2011-11-11 18:50:10

2 réponses

Tu l'as presque eu avec Not. Il devrait être:

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 bitwise exclusive or, 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!"}
379
répondu Rynant 2014-05-19 23:56:34

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

7
répondu Steven Penny 2014-08-18 16:46:05