जैसा कि ईसाई संकेत दिया गया है कि यह पैरामीटरसेट नाम के माध्यम से पूरा किया जा सकता है। इस उदाहरण पर एक नज़र डालें:
function Get-MySPWeb {
[CmdletBinding(DefaultParameterSetName="set1")]
param (
[parameter(ParameterSetName="set1")] $RelativeUrl,
[parameter(ParameterSetName="set2")] $WebUrl,
[parameter(ParameterSetName="set2", Mandatory=$true)] $DisplayName
)
Write-Host ("Parameter set in action: " + $PSCmdlet.ParameterSetName)
Write-Host ("RelativeUrl: " + $RelativeUrl)
Write-Host ("WebUrl: " + $WebUrl)
Write-Host ("DisplayName: " + $DisplayName)
}
आप -RelativeUrl Foo
साथ इसे चलाने अगर यह "SET1" करने के लिए बाध्य होगा। यदि आप इस फ़ंक्शन को बिना पैरामीटर के कहते हैं तो यह "set1" से भी जुड़ जाएगा।
(नोट -जब कोई पैरामीटर में PowerShell v3 (Win8 उपभोक्ता पूर्वावलोकन के साथ) यह "SET1" करने के लिए बाध्य होगा, लेकिन यह जब तक आप परम ब्लॉक करने के लिए [CmdletBinding(DefaultParameterSetName="set1")]
जोड़ने PowerShell v2 में बाध्यकारी त्रुटि होगा धन्यवाद प्रदान की जाती हैं। डिफ़ॉल्ट xarameterSetName टिप के लिए @ x0n!)
यदि आप दोनों सेटों से पैरामीटर मान के साथ इसे चलाने का प्रयास करते हैं तो आपको एक त्रुटि मिल जाएगी।
यदि आप इसे -WebUrl Bar
के साथ चलाते हैं तो यह आपको DisplayName के पैरामीटर मान के लिए संकेत देगा क्योंकि यह एक अनिवार्य पैरामीटर है।
स्रोत
2012-05-25 06:02:53
यह बिल्कुल मुझे चाहिए! धन्यवाद! केवल एक चीज: जब मैं इसे बिना किसी पैराम के चलाता हूं, मुझे एक त्रुटि मिलती है (लेकिन मैं इसे इस तरह से चाहता था)। एक फॉलो-अप प्रश्न: पैरामीटर का उपयोग करते समय इसका उपयोग $ PSCmdlet.ParameterSetName चर के साथ स्विच का उपयोग करना है, है ना? – jumbo
दाएं, '$ PSCmdlet.ParameterSetName' वहां है ताकि आप पैरामीटर बाध्यकारी प्रक्रिया द्वारा मूल्यांकन पैरामीटर सेट के आधार पर उचित कार्रवाई कर सकें। बीटीडब्लू यह दिलचस्प है कि आपको एक त्रुटि मिली, ऐसा लगता है कि यह पीएसवी 2 और पीएसवी 3 के बीच व्यवहार में एक अंतर है। –
इसे v3 की तरह काम करने की चाल डिफ़ॉल्ट पैरामीटर सेट निर्देश का उपयोग करना है। मैंने इसे दिखाने के लिए अपना जवाब संपादित कर लिया है। – x0n