2013-06-14 2 views
8

मेरे पास डेटा की एक बड़ी सूची है (1000 से अधिक विभिन्न मान) और मैं चाहता हूं कि उपयोगकर्ता PowerShell कंसोल से सूची से कुछ मानों का चयन करने में सक्षम हो।ऑटो पूर्ण उपयोगकर्ता इनपुट PowerShell 2.0

कंसोल के भीतर से सबसे आसान तरीका उपयोगकर्ता को मूल्यों का त्वरित चयन करने की अनुमति देता है?

मैं टैब पूर्ण होने या मूल्यों के माध्यम से स्क्रॉल करने के लिए तीर कुंजियों का उपयोग करने की क्षमता कुछ करना चाहता हूं लेकिन मुझे यकीन नहीं है कि इन चीजों में से कोई भी कैसे करें।

किसी भी सलाह की सराहना की जाएगी।

उत्तर

7

पावरशेल टैब पूर्णता कस्टम पैरामीटर और पैरामीटर मान (v3 में) तक बढ़ाया जा सकता है। हालांकि, यह उन्नत कार्यों की एक संपत्ति है। ऐसा करने के लिए आप ValidateSetAttribute का उपयोग कर सकते हैं।

उन्नत कार्यों पर टेकनेट मदद विषय की जाँच करें: http://technet.microsoft.com/en-us/library/hh847806.aspx

आप उन्नत कार्यों के बाहर स्वत: पूर्ण पैरामीटर मान के लिए PowerShell में tabexpansion (v2) और tabexpansion2 (v3) समारोह जगह ले सकता है। आप यहाँ कस्टम टैब विस्तार समारोह दिखाने का एक उदाहरण है

Get-Content function:TabExpansion2 

चलाकर PowerShell v3 में इस की एक बुनियादी परिभाषा मिल सकती है।

http://www.powershellmagazine.com/2012/11/29/using-custom-argument-completers-in-powershell-3-0/

लेकिन, यदि आप इनपुट के एक Read-Host प्रकार के लिए स्वत: पूर्ण मूल्यों के लिए सक्षम होने के लिए उपयोगकर्ता के लिए चाहते हैं, आप Read-Host कि प्राप्त करने के लिए के लिए एक प्रॉक्सी लिखने के लिए की जरूरत है।

आप वैकल्पिक रूप से, PowerTab मॉड्यूल पर http://powertab.codeplex.com/

+0

उत्तर के लिए धन्यवाद! दुर्भाग्यवश मैं केवल v2 का उपयोग करने तक सीमित हूं इसलिए मैं टैबएक्सपेंशन फ़ंक्शन में देखूंगा। – esap120

+0

आप पावरटैब मॉड्यूल को भी देख सकते हैं। http://powertab.codeplex.com/ – ravikanth

1

में लोग हैं, जो एक तरह से तलाश कर रहे हैं यह करने के लिए और पर्याप्त पुनश्च v3 (और सभी के साथ रहने के लिए आवश्यक उन के लिए मुझे खेद का उपयोग किया जा के लिए भाग्यशाली रहे हैं के लिए देख सकते हैं वी 2):

इसे प्राप्त करने का सबसे आसान तरीका आपके इनपुट पैरामीटर में "मान्यडेटसेट" विकल्प का उपयोग कर रहा है।

function Show-Hello { 
param (
    [ValidateSet("World", "Galaxy", "Universe")] 
    [String]$noun 
) 
$greetingString = "Hello, " + $noun + "!" 
Write-Host "`t=>`t" $greetingString "`t<=" 
} 

ValidateSet एक त्रुटि फेंकता है एक उपयोगकर्ता किसी अन्य इनपुट का उपयोग करने का प्रयास करता है, तो: कि पैरामीटर के लिए अपने कार्य करने के लिए

Show-Hello "Solar System" 

    Show-Hello : Cannot validate argument on parameter 'noun'. The argument ` 
    "Solar System" does not belong to the set "World,Galaxy,Universe" specified ` 
    by the ValidateSet attribute. Supply an argument that is in the set and ` 
    then try the command again. 

यह भी टैब-पूरा होने कहते हैं। और यदि यह आपके फ़ंक्शन के लिए पहला पैरामीटर है, तो आपको इसके मूल्य के लिए सुझाव देने के लिए टैब-पूर्ण के लिए "-noun" टाइप करना भी नहीं है।

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