68

Powershellでの意味は何$?ですか?


編集: 「成功」または「失敗」の意味を説明せずに、TechNet はトートロジーで回答します。

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

私は$?$ LastExitCodeが 0 かどうかをテストするだけですが、$? は False ですが、$LastExitCode は True です。

4

4 に答える 4

62

true最後のコマンドが成功した場合は返され、そうでない場合は返されますfalse

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

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

PS> Get-ChildItem 

PS> $? 
    True

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

ただし、存在しないディレクトリで 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前のコマンドが成功しなかったため、ここに戻ります。

于 2012-05-17T10:40:01.760 に答える
7

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

Get-Item -Path john -ErrorAction silentlycontinue;
if( -not $?)
{
    'could not find file.';
     exit
 }`
于 2012-08-08T22:48:46.730 に答える
2

パラメータを使用して最後のコマンドの終了コードにアクセスすることもでき$LastExitCodeます。

# run some command
# ...
if ((! $?) -and $ErrorAction -eq "Stop") { exit $LastExitCode }
于 2018-11-24T00:08:35.690 に答える