我需要获取包含系统卷(通常为C :)的磁盘的一些信息(型号和串行)。我正在使用此查询:
SELECT * FROM Win32_DiskDrive WHERE Index=0
我的问题是,Index = 0的磁盘是否始终是包含系统卷的磁盘?
编辑:我添加了一个额外的查询来获取包含启动分区的磁盘索引:
SELECT * FROM Win32_DiskPartition WHERE BootPartition=True
然后原始查询更改为
SELECT * FROM Win32_DiskDrive WHERE Index={diskIndex}
我认为我这样安全。建议您寻求更好的解决方案:)
答案 0 :(得分:0)
如上所述,添加额外的查询以获取包含启动分区的磁盘的索引:
{diskIndex} = SELECT * FROM Win32_DiskPartition WHERE BootPartition=True
SELECT * FROM Win32_DiskDrive WHERE Index={diskIndex}
不幸的是,WMI似乎不支持JOIN,这会使查询更有效率。
答案 1 :(得分:0)
我的问题是,索引= 0的磁盘是否总是包含系统卷的磁盘?
对于我来说,答案是 No
。我的系统磁盘的索引为1。
同样,您认为系统磁盘始终可引导的假设也不正确。
$ wmic os get "SystemDrive"
SystemDrive
C:
$ wmic logicaldisk where 'DeviceID="C:"' assoc /resultclass:Win32_DiskPartition
...\\DZEN\ROOT\CIMV2:Win32_DiskPartition.DeviceID="Disk #1, Partition #0"...
wmic diskdrive where 'Index=1' get "Caption"
Caption
OCZ-VERTEX4 // Yes, this is my system disk.
对于bootmanager位于另一个磁盘上的情况,您对BootPartition
使用情况的假设也不正确,例如我的情况:
wmic partition where 'DeviceID like "Disk_#1%"' get DeviceID,BootPartition
BootPartition DeviceID
FALSE Disk #1, Partition #0
wmic partition where 'BootPartition="TRUE"' get DeviceID,BootPartition
BootPartition DeviceID
TRUE Disk #4, Partition #0
TRUE Disk #3, Partition #0
如您所见,对于我的情况,可引导磁盘之一都没有系统索引= 0。实际上,对于非系统磁盘和不可引导磁盘之一,我的索引为0。