2012-06-22 17 views
8

मैं एक मौजूदा कमांडलेट को गतिशील संख्याओं के साथ कॉल करना चाहता हूं।पावरहेल में गतिशील पैरामीटर कैसे पास करें?

तो ऐसा करने के बजाय (उदाहरण के रूप में लेखन-होस्ट लेना), मैं इसे स्मार्ट तरीका करना चाहता हूं।

# these are the dynamic parameters which maybe get passed into my function or script 
# they would be $null be default of course 
$forecolor = 'Green' 
$newline = $true 

# now build the "dynamic" write-host... 
if ($forecolor) { 
    if ($newline) { 
     write-host -fore $forecolor "Hello world" 
    } 
    else { 
     write-host -fore $forecolor "Hello world" -nonewline 
    } 
} 
else { 
    if ($newline) { 
     write-host "Hello world" 
    } 
    else { 
     write-host "Hello world" -nonewline 
    } 
} 

यह निश्चित रूप से बहुत बदसूरत है। मुझे इसे सुंदर बनाने में मदद करें!

मैं पहले से ही बस $forecolor = '-fore Green' स्थापित करने की कोशिश की है जो केवल आउटपुट "-fore ग्रीन हैलो वर्ल्ड"। मैं किसी फ़ंक्शन में तर्कों की एक सूची उत्तीर्ण करने के बारे में सोच सकता हूं और सूची में प्रत्येक तर्क के अनुसार पैरामीटर जोड़ें - मुझे नहीं पता कि पैरामीटर को कैसे पकड़ें।

+0

क्या आपने पैरामीटर सेट पर एक नज़र डाली है? http://blogs.technet.com/b/heyscriptingguy/archive/2011/06/30/use-parameter-sets-to-simplify-powershell-commands.aspx –

+0

डेविड, वे यहां कैसे मदद करेंगे? मैं उलझन में हूं। – Joey

उत्तर

16

तुम बस Write-Host को तर्क के रूप में अपने चर पारित कर सकते हैं:

Write-Host -Fore $forecolor -NoNewLine:(!$newline) 'Hello World' 

वास्तव में एक गतिशील जिस तरह से आप एक hashtable उपयोग कर सकते हैं:

$params = @{ NoNewLine = $true; ForegroundColor = 'Green' } 

और फिर सूचक ऑपरेटर

Write-Host @params Hello World 
का उपयोग

आप पहले से पसंद करते हुए हैशटेबल में पैरामीटर और उनके मान जोड़ सकते हैं इस तरह से Write-Host पर कॉल करना।

+4

** बहुत बढ़िया! ** यहां स्पैटिंग के बारे में एक लेख है: http://technet.microsoft.com/en-us/magazine/gg675931.aspx पहले कभी उस जादूगर के बारे में कभी नहीं सुना। धन्यवाद। –

+0

मैं पावरशेल के साथ सालों से काम कर रहा हूं और इस बारे में कभी नहीं सुना है। अब अंत में, मैंने किया: महान सुविधा! – AstralisSomnium