Windows PowerShellselect删除列

我是一个Linux的家伙,所以我习惯于“grep”。 用grep它保留列,但是在PowerShell中,它会改变输出。 例如:

Get-WmiObject -List | Select-String -Pattern "Win32_LogicalDisk$" \\COMP\ROOT\cimv2:Win32_LogicalDisk 

在“Get-WmiObject -List”中列出如下列:

  CIM_Tachometer {SetPowerState, R... {Accuracy, Availability, Caption, ConfigManagerErrorCode... 

我想我的“select”产生整个列,而不仅仅是对象或任何它的返回。 我想模仿Get-WmiObject -List的实际输出的grep

另外作为一个bouns方面的问题:除了MSDN什么是一个很好的网站,列出所有的WMI对象,他们返回什么? 这似乎是一个超强大的方式来获取有关Windows系统的任何方面的信息。 我对吗?

你不想使用Select-String 。 Powershell为这种过滤提供了Where-Object cmdlet:

 Get-WmiObject -List | Where-Object { $_.Name -eq "Win32_LogicalDisk" } 

您也可以使用Select-Object来扩展从Where-Object返回的对象上的属性“属性”:

 Get-WmiObject -List | Where-Object { $_.Name -eq "Win32_LogicalDisk" } | Select-Object -ExpandProperty Properties 

如果你想探索WMI,有很多工具可用。 一个Powershell版本, WMI资源pipe理器可能是你特别感兴趣的。