2012-01-01 16 views
15

मैं enclosing एक अगर बयान में निम्नलिखित तो मैं एक और आदेश निष्पादित कर सकते हैं अगर यह सफल होता है की कोशिश की है:चेक अगर एक आदेश चला गया है सफलतापूर्वक

Get-WmiObject -Class Win32_Share -ComputerName $Server.name -Credential $credentials -Filter "Description='Default share'" | Foreach-Object { 
     $Localdrives += $_.Path 

लेकिन मैं यह कैसे करना है पता नहीं कर सकते हैं। मैंने एक फ़ंक्शन बनाने का भी प्रयास किया लेकिन मैं यह नहीं समझ पाया कि फ़ंक्शन सफलतापूर्वक पूरा हुआ है या नहीं।

उत्तर

10

तुम कोशिश कर सकते हैं:

$res = get-WmiObject -Class Win32_Share -Filter "Description='Default share'" 
if ($res -ne $null) 
{ 
    foreach ($drv in $res) 
    { 
    $Localdrives += $drv.Path 
    } 
} 
else 
{ 
    # your error 
} 
+0

अब कारण है कि मैं इस बारे में नहीं सोचा था !! बहुत बहुत धन्यवाद :) – Sune

36

$ का प्रयास करें? स्वत: चर:

$share = Get-WmiObject -Class Win32_Share -ComputerName $Server.name -Credential $credentials -Filter "Description='Default share'" 

if($?) 
{ 
    "command succeeded" 
    $share | Foreach-Object {...} 
} 
else 
{ 
    "command failed" 
} 

about_Automatic_Variables से:

$? 
    Contains the execution status of the last operation. It contains 
TRUE if the last operation succeeded and FALSE if it failed. 
... 

$LastExitCode 
    Contains the exit code of the last Windows-based program that was run. 
+1

मैंने इस बार पहला समाधान चुना, लेकिन यह करने का यह एक शानदार तरीका है। धन्यवाद एक बार फिर शाय :) – Sune

+0

क्षमा करें शै: टेस्ट 'get-WmiObject -Class Win32_Share -Filter "विवरण =' glurp '" ', लेकिन इस मामले में $? सच है और इस विवरण के साथ कोई साझा नहीं है। – JPBlanc

+5

कमांड में कोई त्रुटि नहीं आई है? $ सच पर सेट है। यह वही है: डीआईआर *। नोसुचे एक्सटेंशन, नतीजा कुछ भी नहीं है और इसे एक त्रुटि के रूप में नहीं माना जाता है। जब आप किसी भी परिणाम को वापस लौटाते हैं तो परीक्षण करना चाहते हैं तो @ जेपीब्लैंक के समाधान का उपयोग करें। –

संबंधित मुद्दे