Spróbuj tego:
$(command -arg1 -arg2 | Out-Host;$?) -and $(command2 -arg1 | Out-Host;$?)
dolarów() jest podwyrażenie pozwala określić wiele deklaracje wewnątrz tym rurociągu. Następnie wykonaj polecenie i potokuj do Out-Host, abyś mógł je zobaczyć. Następnie w następnej instrukcji (rzeczywiste wyjście podwyrażenia) wyprowadzamy $? tj. wynik sukcesu ostatniej komendy.
BTW the $? działa dobrze dla natywnych poleceń (exe konsoli), ale dla cmdletów pozostawia wiele do życzenia. To znaczy, $? tylko wydaje się zwracać $ false, gdy polecenie cmdlet napotyka błąd zakończenia. Wydaje się, że $? potrzebuje co najmniej trzech państw (nie udało się, udało się i częściowo udało). Więc jeśli używasz poleceń cmdlet, działa to lepiej:
$(command -arg1 -arg2 -ev err | Out-Host;!$err) -and
$(command -arg1 -ev err | Out-Host;!$err)
Ten rodzaj ciosów wciąż. Być może coś takiego byłoby lepiej:
function ExecuteUntilError([scriptblock[]]$Scriptblock)
{
foreach ($sb in $scriptblock)
{
$prevErr = $error[0]
. $sb
if ($error[0] -ne $prevErr) { break }
}
}
ExecuteUntilError {command -arg1 -arg2},{command2-arg1}
Czy to nie "-or"? – stej
Krótkofalówka LUB wykona drugie wyrażenie tylko wtedy, gdy pierwsza jest fałszywa (błąd). Podejrzewam, że OP chce, aby drugie wyrażenie zostało wykonane tylko wtedy, gdy pierwsze zeskoczyło na prawdę (sukces), co spowodowało zwarcie - i dało nam. –
Ktokolwiek jest zainteresowany stylem Bash '&&' i '||' staje się częścią PowerShell: zagłosuj na funkcję [tutaj] (https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/11087898 -implement-and-operator-that-bash-has). – mklement0