2016-08-19 18 views
5

Bir nesneyi pipe | nesnesine nasıl anladığımı anlamaya çalışıyorum ve bununla ilgili özellikleri veya yöntemleri arayın.Borulu Nesnenin özelliklerini/yöntemlerini çağırın

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 

miyim boru Get-Item ve üzerinde invoke properties/methods çıktı?

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

cevap

1

sıralama cevap hiçbir olduğunu. Pipeline'u kullanarak böyle bir yöntemi çağıramazsınız. Ama bunu parantez içinde Get-Item çağırma işlemi çevreleyen ve çağırabilirsiniz: Bu yazı olmadan mümkün değildir

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' 

Özellikleri bunu bir komut zaten var ki daha kolaydır. "Kayıt anahtarı" veya "Klasör" var olduğundan emin olmadığımı düşünün. Ben sadece 'sekme 'kullanmaya devam ediyorum, böylece' auto-suggestion 'kullanmak istediğim yere gidiyorum ve şimdi bir şey aramak için, aniden baştan sarmak zorundayım. Bu gerçekten acı – Reddy

+1

Kanonik yolu "ForEach-Object" olacaktır. '% 'Takma adı kullanılarak oldukça özlü yazılabilir: ... | % {$ _. yöntem()} ' –

0

: Bunu istemiyorsanız

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

, sen Select-Object cmdlet'ini kötüye olabilir Bunu yapmak için bir şey. Bu bir şey oldukça kafa karıştırıcı olurdu.

Bunu beğendi. üzücü

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