इस प्रयास करें:
$(command -arg1 -arg2 | Out-Host;$?) -and $(command2 -arg1 | Out-Host;$?)
$() एक उपसूचक आप एक पाइप लाइन सहित भीतर कई बयानों निर्दिष्ट करने की अनुमति है। फिर आउट-होस्ट पर कमांड और पाइप निष्पादित करें ताकि आप इसे देख सकें। फिर अगली बयान उत्पादन $ (उपसूचक की वास्तविक उत्पादन) में? यानी अंतिम आदेश का सफलता परिणाम।
BTW $? देशी आदेश (सांत्वना exe के) के लिए ठीक काम करता है लेकिन cmdlets के लिए यह कुछ होना बाकी है। वह है, $? केवल $ झूठी वापस जाने के लिए जब एक cmdlet एक समाप्त त्रुटि का सामना करना पड़ता है। $ की तरह लगता है? कम से कम तीन राज्यों की आवश्यकता है (असफल, सफल और आंशिक रूप से सफल)। अभी भी
$(command -arg1 -arg2 -ev err | Out-Host;!$err) -and
$(command -arg1 -ev err | Out-Host;!$err)
चल रही इस तरह की: तो आप cmdlets का उपयोग कर रहे हैं, यह बेहतर काम करता है। शायद कुछ इस तरह बेहतर होगा:
function ExecuteUntilError([scriptblock[]]$Scriptblock)
{
foreach ($sb in $scriptblock)
{
$prevErr = $error[0]
. $sb
if ($error[0] -ne $prevErr) { break }
}
}
ExecuteUntilError {command -arg1 -arg2},{command2-arg1}
स्रोत
2010-02-12 15:13:31
क्या यह '-or' 'नहीं है? – stej
एक लघु-परिसंचरण या केवल दूसरी अभिव्यक्ति निष्पादित करेगा यदि पहली बार गलत (विफल) के लिए evals। मुझे संदेह है कि ओपी दूसरी अभिव्यक्ति को केवल तभी निष्पादित करना चाहता है जब पहला सत्य (सफल) होता है जो एक शॉर्ट-सर्किटिंग-और हमें देता है। –
जो कोई भी बैश-शैली '&&' और '||' में पावरशेल का हिस्सा बनने में रूचि रखता है: कृपया सुविधा के लिए वोट दें [यहां] (https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/11087898 -implement-और ऑपरेटरों-कि-बैश-है)। – mklement0