2019 : Powershell チームは、Powershellへのサポートの追加を検討して&&
います - この GitHub PR で検討してください
これを試して:
$(command -arg1 -arg2 | Out-Host;$?) -and $(command2 -arg1 | Out-Host;$?)
これ$()
は、パイプラインを含む複数のステートメントを指定できる部分式です。次に、コマンドとパイプを実行して、Out-Host
表示できるようにします。次のステートメント (部分式の実際の出力) は$?
、最後のコマンドの成功結果を出力する必要があります。
ネイティブ コマンド (コンソール exe) では正常に$?
動作しますが、コマンドレットでは、何かが必要になります。つまり、コマンドレットで終了エラーが発生した場合に$?
のみ戻るようです。少なくとも 3 つの状態 (失敗、成功、部分的に成功) が必要$false
なようです。$?
したがって、コマンドレットを使用している場合、これはより適切に機能します。
$(command -arg1 -arg2 -ev err | Out-Host;!$err) -and
$(command -arg1 -ev err | Out-Host;!$err)
この種の打撃はまだです。おそらく、次のようなものが良いでしょう:
function ExecuteUntilError([scriptblock[]]$Scriptblock)
{
foreach ($sb in $scriptblock)
{
$prevErr = $error[0]
. $sb
if ($error[0] -ne $prevErr) { break }
}
}
ExecuteUntilError {command -arg1 -arg2},{command2-arg1}