WMI查询以选择包含系统卷的磁盘

问题描述 投票:0回答:2

我需要获取包含系统卷(通常是C :)的磁盘的一些信息(模型和序列)。我正在使用此查询:

SELECT * FROM Win32_DiskDrive WHERE Index=0

我的问题是,Index = 0的磁盘是否总是包含系统卷的磁盘?

编辑:我添加了一个额外的查询来获取包含启动分区的磁盘的索引:

SELECT * FROM Win32_DiskPartition WHERE BootPartition=True

然后原始查询更改为

SELECT * FROM Win32_DiskDrive WHERE Index={diskIndex}

我想我会这么安全。欢迎提出更好解决方案的建议:)

wmi wmi-query
2个回答
0
投票

我的问题是,Index = 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.

另外,关于qazxsw poi用法的假设对于启动管理器在另一个磁盘上的情况是不正确的,就像我的情况一样:

BootPartition

正如您所看到的,系统磁盘也没有一个可引导的磁盘在我的情况下没有Index = 0。实际上,对于非系统和非可引导磁盘,我有Index = 0。


0
投票

如上所述,添加额外的查询以获取包含启动分区的磁盘的索引:

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

不幸的是,WMI似乎不支持JOIN,这会使查询更有效率。

© www.soinside.com 2019 - 2024. All rights reserved.