2016-08-19 10 views
5

पर गुण/विधियों को कॉल करें मैं समझने की कोशिश कर रहा हूं कि pipe | किसी ऑब्जेक्ट को कैसे करें और उस पर गुण या विधियों को कॉल करें।पाइप ऑब्जेक्ट

Ex: 
$a = Get-Item Registry::HKLM\SOFTWARE\WOW6432Node\Microsoft\Test\abc\ 
$a.GetSomething() //calls the method 
(Get-Item Registry::HKLM\SOFTWARE\WOW6432Node\Microsoft\Test\abc\).GetSomething() //calls the method 

कर सकते हैं मैं पाइप Get-Item और invoke properties/methods उस पर के उत्पादन में?

Get-Item Registry::HKLM\SOFTWARE\WOW6432Node\Microsoft\Test\abc\ | call GetSomething() 

उत्तर

1

तरह जवाब कोई है। आप पाइपलाइन का उपयोग करके इस तरह की एक विधि को कॉल नहीं कर सकते हैं। लेकिन आप कोष्ठक में अपने Get-Item आह्वान घेर कर सकते हैं और आह्वान यह:

(Get-Item Registry::HKLM\SOFTWARE\WOW6432Node\Microsoft\Test\abc\).GetSomething() 

आपको लगता है कि नहीं करना चाहती हैं, तो आप Select-Object cmdlet का दुरुपयोग कर सकते हैं:

Get-Item Registry::HKLM\SOFTWARE\WOW6432Node\Microsoft\Test\abc\ | select { $_.GetSomething() } 
+1

कि दुख की बात है:

filter Invoke-Method { param( [String]$Method, [Object[]]$ArgumentList ) $_.GetType().InvokeMember( $Method.Trim(), ([System.Reflection.BindingFlags]'InvokeMethod'), $null, $_, $ArgumentList ) } "qwerty" | Invoke-Method Replace 'q', 'z' 

गुण है कि में आसान वहाँ पहले से ही है कि ऐसा करने के लिए एक कमांड कर रहे हैं। कल्पना कीजिए कि मुझे 'रेग कुंजी' या 'फ़ोल्डर' के बारे में निश्चित नहीं है या नहीं। मैं बस 'टैब' का उपयोग करके आगे बढ़ता हूं ताकि मैं वहां जा सकूं जहां मैं 'ऑटो-सुझाव' का उपयोग करना चाहता हूं और अब कुछ कॉल करने के लिए, अचानक मुझे इसे शुरू से ही लपेटना होगा, एक विधि को कॉल कर सकते हैं। यह वास्तव में दर्द है – Reddy

+1

कैनोनिकल तरीका 'फॉरएच-ऑब्जेक्ट' होगा। इसे उपनाम '%': '... | का उपयोग करके बहुत संक्षिप्त लिखा जा सकता है % {$ _। विधि()} ' –

0

यह लेखन के बिना संभव नहीं है ऐसा करने के लिए कुछ। वह कुछ बहुत भ्रमित होगा।

इस तरह।

(...).GetSomething() | Select-Object Property1, Property2