基于先行字符串的 WMI 查询

基于先行字符串的 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

微软发布了一个代码片段,它完全满足您的需要(最后一个:“检测哪个驱动器号与逻辑磁盘分区相关联”,事实上我的答案是基于此的)http://msdn.microsoft.com/en-us/library/aa394592%28v=vs.85%29.aspx

希望这可以帮助

相关内容