12

-File कमांड लाइन स्विच का उपयोग करके पावरहेल स्क्रिप्ट (2.0 में) निष्पादित करते समय, और पैराम में इनपुट पैरामीटर को स्पष्ट रूप से परिभाषित करते समय, निकास कोड हमेशा "0" होता है (कभी विफल नहीं होता) परिभाषित या अपेक्षित त्रुटि कोड को ठीक से वापस करने के बजाय।
यह स्पष्ट पैरामीटर परिभाषाओं और -Command स्विच का उपयोग करते समय नहीं होता है, हालांकि, बाहरी उद्देश्यों के लिए, मुझे अपनी स्क्रिप्ट में -फाइल स्विच रखना होगा।पावरहेल उचित निकास कोड वापस करने में विफल रहता है

वर्कअराउंड (जिसमें स्पष्ट पैरामीटर परिभाषाओं को हटाने में शामिल नहीं है) के साथ कोई सहायता अत्यंत सहायक होगी।

Powershell "सही निकास कोड को वापस करने में विफल रहता":

exit1.ps1: स्क्रिप्ट है कि स्पष्ट रूप से मानकों को परिभाषित करता है पर कॉल करें। त्रुटिलेवल हमेशा 0 है, भले ही स्क्रिप्ट के कुछ भाग हैं जो अनजाने में विफल हो जाते हैं।

param(
    [Parameter(mandatory=$true)][string]$arg1, 
    [Parameter(mandatory=$true)][string]$arg2, 
    [Parameter(mandatory=$true)][string]$arg3 
); 
exit 1; 

आउटपुट:

Exit1LooseParam.ps1:

C:\temp\testnant>powershell -noprofile -nologo -noninteractive -executionpolicy Bypass -file .\exit1.ps1 "one" "two" "three" 

C:\temp\testnant>echo %errorlevel% 
0 




अब, जब परम समारोह को संशोधित कम स्पष्ट होना करने के लिए देता है एक ही बात की कोशिश

param(
    $arg1, 
    $arg2, 
    $arg3 
); 
exit 1; 

(तीन मापदंडों के साथ) आउटपुट:

C:\temp\testnant>powershell -noprofile -nologo -noninteractive -executionpolicy Bypass -file .\Exit1looseParam.ps1 "one" "two" "three" 

C:\temp\testnant>echo %errorlevel% 
1 




ऐसा लगता है कि जब आप स्पष्ट रूप से इनपुट पैरामीटर परिभाषित करते हैं, Powershell किसी कारण से "अपने freakin मन खोना" लगता है और वापस जाने के लिए विफल रहता है उचित निकास कोड।

किसी को भी एक समाधान है या समझाने के लिए क्यों यह हो रहा है में सक्षम हो रहा है?

उत्तर

14

हम्म यह अजीब है, मैं दोनों मामलों में काम करने के लिए exit 1 की अपेक्षा करता हूं। कम से कम तुम दोनों के लिए इसका उपयोग कर सकते हैं:

[Environment]::Exit(1)

+0

प्रतीत होता है कि बाहर निकलने के कोड को ठीक से वापस जाने के लिए। धन्यवाद! – JonnyG

+0

इसके लिए धन्यवाद, बस मेरे लिए एक समस्या भी हल की गई :) –

+0

इसके बिना मैं केवल 0 या 1 लौटने के लिए बाहर निकल सकता था – cmcginty