首页 > 解决方案 > 检索特定驱动器数据 - Get-WmiObject Win32_logicaldisk

问题描述

我正在尝试使用 Get-WmiObject 检索特定驱动器的 FreeSpace。

在我的机器上使用 Get-WmiObject Win32_logicaldisk 返回以下内容:

PS C:\Users\Julian\Desktop\Tools\Powershell> Get-WmiObject Win32_logicaldisk | Select-Object DeviceID, FreeSpace
DeviceID  FreeSpace
--------  ---------
C:  47114498048
S:  9963356160
Z:  985061974016

我想根据我指定的驱动器号 (DeviceID) 专门请求 FreeSpace,但是我不确定如何执行此操作,因为我对 powershell 还比较陌生。任何帮助,将不胜感激。

标签: powershellfilterwmiwqlcim

解决方案


使用-Filter参数在源头过滤对象:

PS> Get-WmiObject Win32_logicaldisk -Filter 'DeviceId = "C:"' | Select-Object DeviceID, FreeSpace

DeviceID   FreeSpace
--------   ---------
C:       14188314624

过滤器表达式'DeviceId = "C:"'本质上是WQL语句的WHERE子句。


但是请注意,这些*-Cim-*cmdlet 已取代*-Wmi*PSv3+ 中的 cmdlet。

幸运的是,WQL 是CQL(CIM 查询语言)的实现,因此可以使用相同的过滤器:

PS> Get-CimInstance Win32_logicaldisk -Filter 'DeviceId = "C:"' | Select-Object DeviceID, FreeSpace

DeviceID   FreeSpace
--------   ---------
C:       14188314624

推荐阅读