2012-09-11 12 views
16

मैं एक powershell (2.0) स्क्रिप्ट तर्क है कि इस बुनियादी पैटर्न का पालन स्वीकार करेगा बनाने के लिए कोशिश कर रहा हूँ:Powershell गैर स्थितीय, वैकल्पिक पैरामीटर

.\{script name} [options] PATH 

कहाँ विकल्पों वैकल्पिक पैरामीटर के किसी भी संख्या रहे हैं - साथ लगता है वर्बोज़ के लिए '-v' की रेखाएं। पाथ तर्क केवल अंतिम रूप से जो भी तर्क पारित किया जाएगा, और अनिवार्य है। कोई भी स्क्रिप्ट को बिना किसी विकल्प और केवल एक तर्क के साथ बुला सकता है, और वह तर्क पथ माना जाएगा। मुझे एक पैरामीटर सूची सेट करने में समस्या हो रही है जिसमें केवल वैकल्पिक पैरामीटर हैं लेकिन यह भी गैर-स्थितित्मक है।

#param test script 
Param(
    $firstArg, 
    $secondArg, 
    [switch]$thirdArg, 
    [Parameter(ValueFromRemainingArguments = $true)] 
    $remainingArgs) 

write-host "first arg is $firstArg" 
write-host "second arg is $secondArg" 
write-host "third arg is $thirdArg" 
write-host "remaining: $remainingArgs" 

जब ऐसा तरह कहा जाता है:

.\param-test.ps1 firstValue secondValue 

स्क्रिप्ट आउटपुट:

first arg is firstValue 
second arg is secondValue 
third arg is False 
remaining: 

व्यवहार मैं हूँ कोशिश कर

यह त्वरित स्क्रिप्ट समस्या मैं कर रहा हूँ यह दर्शाता है बनाने के लिए दोनों तर्क वें के माध्यम से गिरेंगे ई वैकल्पिक पैरा और शेष आर्गस चर में समाप्त होता है।

This question/answer काम आते हुए वांछित व्यवहार प्राप्त करने के लिए एक तरीका प्रदान, लेकिन यह तभी कम से कम एक अनिवार्य पैरामीटर है, और यह आता ही अगर काम करने के लिए लगता है अन्य तर्कों के सब से पहले।

मैं firstArg अनिवार्य बनाना और 0 से स्थिति निर्दिष्ट करके इस व्यवहार का प्रदर्शन कर सकते हैं:

.\param-test.ps1 firstValue secondValue 

उत्पादन इस प्रकार है के रूप में: पहले की तरह ही इनपुट के साथ

#param test script 
Param(
    [Parameter(Mandatory=$true, Position = 0)] 
    $firstArg, 
    $secondArg, 
    [switch]$thirdArg, 
    [Parameter(ValueFromRemainingArguments = $true)] 
    $remainingArgs) 

    write-host "first arg is $firstArg" 
    write-host "second arg is $secondArg" 
    write-host "third arg is $thirdArg" 
    write-host "remaining: $remainingArgs" 

भागो

first arg is firstValue 
second arg is 
third arg is False 
remaining: secondValue 

पहला, अनिवार्य तर्क सौंपा गया है, और बाकी सब कुछ छोड़ दिया गया है एच।

सवाल यह है: मैं कैसे एक पैरामीटर सूची ऐसी है कि पैरामीटर केसब सेट कर सकते हैं वैकल्पिक हैं, और उनमें से कोई भी स्थितीय है?

उत्तर