2016-09-12 21 views
0
function func { 
    echo ALERT 
    return $false 
} 

if (func) { 
    Write-Output "TRUE" 
} 

このコードは、falseを返す関数にもかかわらずTRUEを書き込みます。しかし、書き込むときに[void]echo ALERT PowershellがエラーをスローするPowershell関数の戻り値

表現や文に予期しないトークン 'echo'があります。

このコードを修正するにはどうすればよいですか?あなたのコード内

答えて

1

echo ALERTある文字列を返しますが(echoWrite-Outputの別名である)

あなたは、文字列の場合は、チェックを行う場合は、文字列がnullまたは空でない場合、PowerShellがチェックされます。

したがって、常にtrueを返します。

「ALERT」のユーザーに警告する場合は、Write-Hostを使用してください。

function func { 
    Write-Host ALERT 
    return $false 
} 
+0

私は単純に[void] echo(エラーをスロー)と書くことはできません。私は{}でエコーをラップしなければならなかった。 e。 [void] {echo ALERT}を実行すると、コードパスの構文チェックが行われます。 – cloud1