Powershellでの意味は何$?
ですか?
編集: 「成功」または「失敗」の意味を説明せずに、TechNet はトートロジーで回答します。
$?
最後の操作の実行ステータスが含まれます。最後の操作が成功した場合は TRUE、失敗した場合は FALSE が含まれます。
私は$?$ LastExitCodeが 0 かどうかをテストするだけですが、$? は False ですが、$LastExitCode は True です。
Powershellでの意味は何$?
ですか?
編集: 「成功」または「失敗」の意味を説明せずに、TechNet はトートロジーで回答します。
$?
最後の操作の実行ステータスが含まれます。最後の操作が成功した場合は TRUE、失敗した場合は FALSE が含まれます。
私は$?$ LastExitCodeが 0 かどうかをテストするだけですが、$? は False ですが、$LastExitCode は True です。
true
最後のコマンドが成功した場合は返され、そうでない場合は返されますfalse
。
ただし、いくつかの注意事項と非自明な動作 (「成功」とは正確に何を意味するかなど) があります。より完全な治療のために、この記事を読むことを強くお勧めします。
たとえば、Get-ChildItem の呼び出しを検討してください。
PS> Get-ChildItem
PS> $?
True
$? True
Get-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
前のコマンドが成功しなかったため、ここに戻ります。
$?
$false
最後のコマンドがエラーになった場合に含まれます。$true
含まれていない場合は含まれます。PowerShell v1の時代には、これがエラー処理の一般的な方法でした。たとえば、スクリプトでファイルの存在を確認し、存在しない場合はカスタム メッセージを出力する場合は、次のようにします。
Get-Item -Path john -ErrorAction silentlycontinue;
if( -not $?)
{
'could not find file.';
exit
}`
パラメータを使用して最後のコマンドの終了コードにアクセスすることもでき$LastExitCode
ます。
# run some command
# ...
if ((! $?) -and $ErrorAction -eq "Stop") { exit $LastExitCode }