WMI-запрос на основе предшествующей строки
Я пытаюсь отобразить физические диски на смонтированные разделы и даже далее на буквы смонтированных томов (C:\ смонтирован на разделе 0 диска 0)
Сначала я использую
Select * from Win32_DiskDrive
получить индекс для всех физических дисков. Тогда я использую
SELECT Name FROM Win32_DiskPartition WHERE Index = " & objDiskDrive.Index
Название что-то в форме Disk #0 Partition #0
, Используя это, я пытаюсь выполнить запрос к Win32_LogicalDiskToPartition
Это возвращает такие вещи, как:
Antecedent: \\COMP_NAME\root\cimv2:Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
Dependent: \\COMP_NAME\root\cimv2:Win32_LogicalDisk.DeviceID="C:"
EndingAddress: 160039272959
StartingAddress: 1048576
Если бы я мог выполнить запрос к предыдущей строке и проанализировать зависимую строку, я мог бы получить свое отображение, но это не работает. Запрос недействителен. Я пытаюсь запустить следующее:
Select * from Win32_LogicalDiskToPartition WHERE Antecedent LIKE '%Disk #0, Partition #0%'
1 ответ
Я считаю, что вы должны использовать ASSOCIATORS OF
заявление ( ссылка), чтобы получить результаты, которые вам нужны. Таким образом, выражение wql будет:"ASSOCIATORS OF {Win32_DiskPartition.DeviceID='Disk #0, Partition #0'} WHERE AssocClass = Win32_LogicalDiskToPartition"
Вы также можете использовать ту же технику, чтобы сначала получить раздел (ы) (с ассоциированным классом). Win32_DiskDriveToDiskPartition
)
Microsoft опубликовал фрагмент кода, который делает именно то, что вам нужно (последний: "определить, какая буква диска связана с разделом логического диска", на котором я фактически основал свой ответ) http://msdn.microsoft.com/en-us/library/aa394592%28v=vs.85%29.aspx
Надеюсь это поможет