2010-12-13 18 views

答えて

74

を行うことができ、$false$nullは、チェック:if ($ie) {...}に合格します。

38

あなたはまた、私は''(空の文字列)以外の値以来$nullチェックに固執う0

if ($ie) { 
    # Do Something if $ie is not null 
} 
+0

(-not $ IE)場合、私は、COMオブジェクトの種類が「doesnの場合は ' –

11

おそらくという特定の例では、でチェックを行う必要はありません。それは可能ですNew-Objectはnullを返しますか?私はそれを見たことがない。このコマンドは、問題が発生した場合には失敗し、この例の残りのコードは実行されません。だから、どうしてその小切手をしなければならないのですか?コードだけで

我々はいくつかのチェック($ヌルとの明示的な比較が最善である)必要がある以下のように:

# we just try to get a new object 
$ie = $null 
try { 
    $ie = New-Object -ComObject InternetExplorer.Application 
} 
catch { 
    Write-Warning $_ 
} 

# check and continuation 
if ($ie -ne $null) { 
    ... 
} 
+1

{$すなわち/でfalsey存在しない場合は#が何かする}'このオプションとその否定が好きnew-Objectは例外をスローします。しかし、私はそれがnullを返す方法を見ていない。また、例外を無視してnullをテストするのは悪いフォームです。 – JasonMArcher

+0

@JasonMArcher:私は最後の発言に絶対に同意します。しかし、実際に、私がデモの例で書いてくれると思いますか?また、シナリオによってはこのコードでも問題ありません。 –

+0

基本的に、$ ieを使用するすべてのコードをtry {}の中に置きます。そうすれば、例外があればスキップされます。 – JasonMArcher

1

-is演算子で型チェックは、すべてのNULL値にfalseを返します。 ほとんどの場合、すべてではないにしても、null以外の値があれば、$ value -is [System.Object]はtrueになります。 (すべての場合、null値に対してfalseになります。)

オブジェクトがない場合、私の値は何もありません。

+1

またはさらに '$ value -is [__ComObject]' –

関連する問題