Мне нужно запросить System Center Configuration Manager (текущая ветка, версия 1606) для получения информации о дисках, разделах и томах клиентских компьютеров.
Однако, похоже, нет никакого способа связать логические диски с физическими дисками и разделами; эти данные представлены как три разных класса в обозревателе ресурсов, и даже соответствующие таблицы и представления базы данных не предоставляют возможности связать логический диск с физическим диском и разделом (в то время как вместо этого раздел может быть по крайней мере связан с его физическим диском ).
К сожалению, это хорошо известная проблема в системах Windows, которую довольно сложно решить даже при использовании WMI:
https://blogs.technet.microsoft.com/heyscriptingguy/2005/05/23/how-can-i-correlate-logical-drives-and-physical-disks
https://stackoverflow.com/questions/4822559/powershell-and-wmi-how-to-map-logical-disk-volumes-to-a-hard-disk-or-vice-versa
Неужели это так сложно? Можно ли вообще получить из SCCM список логических дисков и физические диски и разделы, на которых они находятся?
SCCM не получает эту информацию сам по себе, но существует класс WMI, предоставляющий ее: Win32_LogicalDiskToPartition.
Этот класс необходимо добавить в конфигурацию инвентаризации оборудования SCCM; после получения данных появляется возможность использовать их для присоединения логических дисков к физическим разделам; требуется некоторая обработка строк, потому что класс предоставляет разделы и диски в следующем формате:
\\HOSTNAME\root\cimv2:Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
\\HOSTNAME\root\cimv2:Win32_LogicalDisk.DeviceID="C:"
Пожалуйста, обратитесь к следующему запросу:
Select * from v_GS_DISK
Select * from v_GS_PARTITION
Select * from v_GS_LOGICAL_DISK
Select di.DeviceID0,pa.DeviceID0,ld.DeviceID0,* from v_GS_LOGICAL_DISK LD
inner join v_GS_PARTITION PA
ON LD.ResourceID=PA.ResourceID
inner join v_GS_DISK DI
ON DI.ResourceID=PA.ResourceID