2013-03-18 151 views
1

让我们例如以下请求:对ASSOCIATORS OF语句中的ObjectPath有任何限制吗?

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类

所以任何财产,什么是错的这一要求修改?

回答

3

ObjectPath是一个字符串,它唯一标识一个类的实例,并且符合WMI类的关键属性,因此您不能使用任何属性来构建ObjectPath。在这种情况下,Win32_DiskPartition的对象路径使用DeviceID属性,该属性是该类的Key属性。

enter image description here

ASSOCIATORS OF的基本语法是

ASSOCIATORS OF {ObjectPath} 

所以,你只能通过一个有效的对象传递给这句话。

+0

谢谢!这是一个耻辱MSDN并没有提到这样的重要信息......你能告诉我什么应用程序显示这个属性树? – 2013-03-20 09:32:20

+0

该应用程序是[WMI Delphi Code Creator](http://code.google.com/p/wmi-delphi-code-creator/) – RRUZ 2013-03-20 13:32:06

+0

伟大的问题,很好的答案,伟大的工具(WMI Delphi Code Creator)!谢谢 – Bosco 2013-05-31 11:16:29