Получить определенные данные диска - 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