我们以下面的请求为例:
ASSOCIATORS OF {Win32_DiskPartition.DeviceID="Disk #2, Partition #0"} WHERE AssocClass = Win32_LogicalDiskToPartition
它运行正常并返回相应的列表(在我的情况下)一个逻辑磁盘,F:。但是,如果我更改在此查询中指定对象的方法,例如,这样:
ASSOCIATORS OF {Win32_DiskPartition.DiskIndex=2} WHERE AssocClass = Win32_LogicalDiskToPartition
我收到“无效的对象路径”错误(在PowerShell中)。 DiskIndex字段肯定存在(请求“SELECT * FROM Win32_DiskPartition WHERE DiskIndex = 2”返回我的磁盘#2上唯一的分区,那么这样的请求有什么问题?我还尝试使用Win32_DiskPartition类的其他一些字段,但它们都没有在“ASSOCIATORS OF”请求中工作。互联网上的任何地方(也就是谷歌发送给我的地方)都没有关于对ObjectPath的任何限制的信息。此外,我发现了一个article,作者明确地说:
此限定符可以是来自源WMI类
的任何属性
那么,这次请求修改有什么问题?
答案 0 :(得分:3)
ObjectPath
是唯一标识类实例的字符串,并且符合WMI类的键属性,因此您无法使用任何属性来构建ObjectPath
。在这种情况下,Win32_DiskPartition
的对象路径使用DeviceID属性,该属性是此类的Key
属性。
ASSOCIATORS OF
的基本语法是
ASSOCIATORS OF {ObjectPath}
所以你只能将有效的对象传递给这句话。