2012-03-26 14 views
40

MSDNのドキュメントが理解できないか、マニュアルが正しくないです。Powershellおよび条件付き演算子

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

出力しようとしていることを理解していただければ幸いです。私は最初のステートメントにアクセスするために$ user_samと$ user_caseを設定したい!

答えて

64

あなたは空の文字列が$falseに強制するので

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

にそれを簡素化(およびそのため、$nullを行うことができます:ここではあなたが持っているもの「」のために働くだろうという点を証明する例がありますその問題)。

4

このようにしてみてください。

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

空の変数は、あなたがはあなたが望むものを行いますが示されている([string]::empty).

2

コード「」とは異なる$nullです。 IFFこれらのプロパティは、入力されていないときに ""等しくなります。たとえば、入力されていないときに$ nullに等しい場合、 ""と等しくなりません。

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

別のオプション:

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