2012-03-26 20 views
40

O no entiendo la documentación en MSDN o la documentación es incorrecta.Powershell y operador condicional

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

Espero que entiendan lo que estoy tratando de generar. ¡Quiero llenar $ user_sam y $ user_case para acceder a la primera declaración!

Respuesta

64

puede simplificar a

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

porque las cadenas vacías coaccionan a $false (y lo mismo ocurre con $null, por ese asunto).

4

Trate de esta manera:

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

las variables vacías son $null continuación, diferente de "" ([string]::empty).

2

El código que ha demostrado hará lo que quiere. IFF esas propiedades son iguales a "" cuando no se completan. Si equivalen a $ null cuando no se completan, por ejemplo, entonces no serán iguales a "". Este es un ejemplo para demostrar el punto que lo que tiene va a trabajar para "":

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

Otra opción:

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