2012-01-01 7 views
15

私はこれが成功した場合ので、私は別のコマンドを実行することができますif文で次の囲み試してみた:チェックが正常に

Get-WmiObject -Class Win32_Share -ComputerName $Server.name -Credential $credentials -Filter "Description='Default share'" | Foreach-Object { 
     $Localdrives += $_.Path 

が、私はそれを行う方法を見つけ出すことはできません。私も関数の作成を試みたが、関数が正常に完了したかどうかを調べる方法を見つけることができなかった。

答えて

10

あなたが試すことができます:

$res = get-WmiObject -Class Win32_Share -Filter "Description='Default share'" 
if ($res -ne $null) 
{ 
    foreach ($drv in $res) 
    { 
    $Localdrives += $drv.Path 
    } 
} 
else 
{ 
    # your error 
} 
+0

さて、なぜ私はこれを考えていませんでした!ありがとうございました:) – Sune

36

は$を試してみてください?自動変数:about_Automatic_Variablesから

$share = Get-WmiObject -Class Win32_Share -ComputerName $Server.name -Credential $credentials -Filter "Description='Default share'" 

if($?) 
{ 
    "command succeeded" 
    $share | Foreach-Object {...} 
} 
else 
{ 
    "command failed" 
} 

$? 
    Contains the execution status of the last operation. It contains 
TRUE if the last operation succeeded and FALSE if it failed. 
... 

$LastExitCode 
    Contains the exit code of the last Windows-based program that was run. 
+1

今回は最初の解決方法を選択しましたが、これは絶対に実行するのに最適な方法です。ありがとうございましたShay :) – Sune

+0

申し訳ありませんシェイ:テスト 'get-WmiObject -Class Win32_Share -Filter" Description = 'glurp' "'、しかしこの場合は$?本当であり、この記述と共有がない。 – JPBlanc

+5

コマンドはエラーを返さなかったので、$? $ trueに設定されています。これはdir * .NoSucheExtensionと同じですが、結果は何もなく、エラーとはみなされません。コマンドが結果を返すかどうかをテストする場合は、@ JPBlancのソリューションを使用してください。 –

関連する問題