62 votes

L'opérateur PowerShell et conditionnel

Soit je ne comprends pas la documentation sur MSDN, soit la documentation est incorrecte.

 if($user_sam -ne "" -and $user_case -ne "")
{
    Write-Host "Waaay! Both vars have values!"
}
else
{
    Write-Host "One or both of the vars are empty!"
}

J'espère que vous comprenez ce que j'essaie de sortir. Je veux remplir $user_sam et $user_case afin d'accéder à la première instruction !

93voto

Joey Points 148544

Vous pouvez le simplifier en

 if ($user_sam -and $user_case) {
  ...
}

parce que les chaînes vides contraignent à $false (et il en va de même de $null , d'ailleurs).

10voto

Shay Levy Points 41404

Une autre option:

 if( ![string]::IsNullOrEmpty($user_sam) -and ![string]::IsNullOrEmpty($user_case) )
{
   ...
}

6voto

CB. Points 24549

Essayez comme ceci :

 if($user_sam -ne $NULL -and $user_case -ne $NULL)

Les variables vides sont $null puis différentes de "" ( [string]::empty ).

5voto

EBGreen Points 14478

Le code que vous avez montré fera ce que vous voulez si ces propriétés sont égales à "" lorsqu'elles ne sont pas remplies. Si elles sont égales à $null lorsqu'elles ne sont pas remplies, par exemple, elles ne seront pas égales à "". Voici un exemple pour prouver que ce que vous avez fonctionnera pour "" :

 $foo = 1
$bar = 1
$foo -eq 1 -and $bar -eq 1
True
$foo -eq 1 -and $bar -eq 2
False

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X