2012-05-17 8 views
20

Powershellの$?の意味はなんですか?


編集:TechNet answersトートロジーで、 '失敗' '成功' または何を説明せずに意味。

$?
最後の操作の実行ステータスが含まれます。最後の操作が成功した場合はTRUEを返し、失敗した場合はFALSEを返します。

私は$と推定していますか? $ LastExitCodeが0かどうかをテストするだけですが、$ counter exampleが見つかりました。 $ LastExitCodeはTrueです。

答えて

23

最後のコマンドが成功した場合はtrue、それ以外の場合はfalseを返します。

しかし、いくつかの注意点や非自明な動作(例:「成功」と正確には何を意味するか)があります。完全な治療のためにthis articleを読むことを強くお勧めします。

たとえば、Get-ChildItemを呼び出すことを検討してください。

PS> Get-ChildItem 

PS> $? 
    True 

$? Get-ChildItemの呼び出しが成功するとTrueが返されます。

ただし、存在しないディレクトリでGet-ChildItemを呼び出すと、エラーが返されます。

PS> Get-ChildItem \Some\Directory\Which\Does\Not\Exist 
    Get-ChildItem : Cannot find path 'C:\Some\Directory\Which\Does\Not\Exist' because it does not exist. 

PS> $? 
    False 

$?前のコマンドが成功しなかったので、ここでFalseを返します。

+0

コマンドとは何ですか? –

+0

@MattHickfordコマンドはPowershellを使って実行するものです。たとえば、コマンドレットまたは実行可能ファイルにすることができます。私が追加した例を見てください。 –

+0

「成功」とはどういう意味ですか?あなたは$ LastExitCodeが0の場合にのみ、それが意味すると思いますか? –

3

$?には、最後のコマンドでエラーが発生した場合は$falseが含まれます。それがなければ$trueを含むでしょう。 PowerShell v1日で、これはエラー処理を行う一般的な方法でした。たとえば、スクリプトで、ファイルの存在を確認し、カスタムメッセージがない場合はカスタムメッセージを印刷する場合は、次のようにします。

Get-Item -Path john -ErrorAction silentlycontinue; 
if(-not $?) 
{ 
    'could not find file.'; 
    exit 
}` 
+2

代わりに人々は今何をしていますか? – mikemaccana

+1

@mikemaccana、ここの同じボートに....私はtry/catchステートメントと思うでしょう。 – Johnrad

関連する問題