我是一名 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...
我希望我的“选择”能够产生整个列,而不是仅返回对象或任何内容。我想模拟 Get-WmiObject -List 的实际输出的 grep
另外还有一个附加问题:除了 MSDN,还有哪个好的网站可以列出所有 WMI 对象及其返回的内容?这些似乎是获取有关 Windows 系统任何方面的信息的超级强大方法。对吗?
答案1
您不想使用Select-String
。Powershell 提供Where-Object
用于此类过滤的 cmdlet:
Get-WmiObject -List | Where-Object { $_.Name -eq "Win32_LogicalDisk" }
您也可以使用Select-Object
扩展从以下对象返回的属性“Properties” Where-Object
:
Get-WmiObject -List | Where-Object { $_.Name -eq "Win32_LogicalDisk" } | Select-Object -ExpandProperty Properties
如果你想探索 WMI,有很多工具可用。一个 Powershell 版本,WMI 资源管理器您可能特别感兴趣。