कहा जाता है जो मैं करने की कोशिश कर रहा हूं, समय सीमा तक पहुंचने पर पाइपलाइन फ़ीड को रोकने के लिए एक फ़ंक्शन प्राप्त करें। मैं एक परीक्षण समारोह बना लिया है इस प्रकार है:पावरशेल पाइपलाइन को रोकना, सुनिश्चित करें कि अंत को
function Test-PipelineStuff
{
[cmdletbinding()]
Param(
[Parameter(ValueFromPipeLIne=$true)][int]$Foo,
[Parameter(ValueFromPipeLIne=$true)][int]$MaxMins
)
begin {
"THE START"
$StartTime = Get-Date
$StopTime = (get-date).AddMinutes($MaxMins)
"Stop time is: $StopTime"
}
process
{
$currTime = Get-Date
if($currTime -lt $StopTime){
"Processing $Foo"
}
else{
continue;
}
}
end { "THE END" }
}
यह निश्चित रूप पाइप लाइन बंद हो जाएगा, लेकिन यह कभी नहीं मेरी कॉल "अंत {}" ब्लॉक है, जो इस मामले में महत्वपूर्ण है। क्या किसी को पता है कि "जारी रखें" का उपयोग करके पाइपलाइन को बंद करते समय मेरा "अंत {}" ब्लॉक क्यों नहीं कहा जा रहा है? यदि मैं एक पाइपलाइनस्टॉप अपवाद फेंकता हूं तो व्यवहार समान होता है।
संभवतः 'जारी रखें' अपने युक्त लूप से बाहर निकल रहा है, केवल कोई भी नहीं है जिससे यह आपके पूरे कार्य को स्पष्ट कर सके। हालांकि यह बिल्कुल उपयोगी नहीं है। मुझे यकीन नहीं है कि क्या करने का एक उचित तरीका है जो आप यहां करने की कोशिश कर रहे हैं। –
जैसा कि मैं इसे समझता हूं, cmdlets जैसे कि Select-Object -First 1 पाइपलाइन को रोकने के लिए StopUpstreamCommandsException को बढ़ाएगा, जो एक आंतरिक अपवाद है और मेरे अपने उपयोग के लिए दृश्यमान नहीं है। :( –
हो सकता है कि आप अपना 'अंत {}' प्रसंस्करण एक अलग स्क्रिप्टब्लॉक में डाल दें जिसे आप 'else {} 'क्लॉज इन' प्रक्रिया {}'? –