调用Piped对象上的属性/方法

Red*_*ddy 8 powershell

我试图了解如何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
Run Code Online (Sandbox Code Playgroud)

我可以管的输出Get-Iteminvoke properties/methods上呢?

Get-Item Registry::HKLM\SOFTWARE\WOW6432Node\Microsoft\Test\abc\ | call GetSomething()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ndl 6

简短的回答是否定的。您不能使用 Pipeline 调用这样的方法。但是您可以将您的Get-Item调用括在括号中并调用它:

(Get-Item Registry::HKLM\SOFTWARE\WOW6432Node\Microsoft\Test\abc\).GetSomething()
Run Code Online (Sandbox Code Playgroud)

如果您不希望那样,您可以滥用Select-Objectcmdlet:

Get-Item Registry::HKLM\SOFTWARE\WOW6432Node\Microsoft\Test\abc\  | select { $_.GetSomething() }
Run Code Online (Sandbox Code Playgroud)

  • 规范的方式是“ForEach-Object”。使用别名`%` 可以写得非常简洁:`... | % { $_.method() }` (2认同)