2012-03-26 18 views
40

Entweder ich verstehe die Dokumentation auf MSDN nicht oder die Dokumentation ist falsch.Powershell -und bedingten Operator

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

Ich hoffe, Sie verstehen, was ich ausgeben möchte. Ich möchte $ user_sam und $ user_case auffüllen, um auf die erste Anweisung zuzugreifen!

Antwort

64

Sie können es vereinfachen

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

weil leere Strings zu $false zwingen (und so auch $null, für diese Angelegenheit).

4

Versuchen wie folgt aus:

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

leere Variablen sind $null dann unterscheidet sich von "" ([string]::empty).

2

Der Code, den Sie gezeigt haben wird tun, was Sie wollen. IFF diese Eigenschaften sind gleich "", wenn sie nicht ausgefüllt sind. Wenn sie $ null sind, wenn sie nicht ausgefüllt sind, dann sind sie nicht gleich "". Hier ist ein Beispiel, den Punkt zu beweisen, dass das, was Sie arbeiten für „“:

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

Eine weitere Option:

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