为什么对于已关闭电源的虚拟机,“ Get-Vm | Sls PoweredOff”不使用grep?

时间:2019-01-03 01:40:17

标签: powershell vmware

我正在尝试使用PowerCLI搜索PoweredOff VM的列表。

我要搜索命令Get-Vm的结果:

Vm01 PoweredOn  1 16
Vm02 PoweredOff 1 16
etc.

我想在此列表中搜索“ PoweredOff”,但是如果我键入以下内容,PowerShell Sls似乎不起作用:

Get-Vm | sls PoweredOff

它不会显示PoweredOff虚拟机。谁能提供任何指导,以输出要搜索的文本流(而不是要搜索的对象列表)?

1 个答案:

答案 0 :(得分:1)

PowerShell cmdlet返回对象,而不是简单的文本输出。您可以使用Where-Object cmdlet按特定属性的值过滤输出。

Get-Vm | Where-Object { $_.PowerState -eq 'PoweredOff' }

表格或列表输出通常会向您显示属性名称。但是,并非默认情况下可能会显示所有对象的属性,有时有时会使特定类型的默认输出格式看起来与正常输出不同(例如Get-Process输出)。您可以使用Get-Member cmdlet获取对象的所有属性(和方法)的列表。添加参数-Force以包括固有属性。添加参数-Static以显示类方法而不是对象方法。

对于VMware的cmdlet,您还可以检查PowerCLI documentation,其中列出了cmdlet的返回类型。