Получить определенные данные диска - Get-WmiObject Win32_logicaldisk

Я пытаюсь получить FreeSpace для конкретного диска с помощью Get-WmiObject.

Использование 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

Я хочу специально запросить FreeSpace в зависимости от буквы диска (DeviceID), которую я указываю, однако я не уверен, как это сделать, так как я довольно новичок в powershell. Любая помощь будет оценена.

1 ответ

Решение

Использовать -Filter Параметр для фильтрации объектов у источника:

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

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

Выражение фильтра 'DeviceId = "C:"' по сути WHERE предложение оператора WQL.


Обратите внимание, однако, что *-Cim-* командлеты заменили *-Wmi* командлеты в PSv3+.

К счастью, WQL является реализацией CQL (языка запросов CIM), поэтому можно использовать тот же фильтр:

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

DeviceID   FreeSpace
--------   ---------
C:       14188314624
Другие вопросы по тегам