ASSOCIATORS OF语句检索与特定源实例相关联的所有实例。被检索的实例被称为端点。每个端点返回的次数与源对象之间的关联一样多。例如,假设有实例A,B,X和Y.存在两个关联实例,一个链接A和X,另一个链接B和Y.以下查询返回单个端点X:
ASSOCIATORS OF {A}
但是,如果存在另一个链接A和X的关联,则上述查询返回两个X端点。
ASSOCIATORS OF语句的基本语法是:
ASSOCIATORS OF {ObjectPath}
请注意,大括号是语法的一部分。ObjectPath可以使用任何有效的对象路径。对象路径中的令牌不能包含任何空格。例如,下表中的查询返回与指定逻辑磁盘相关联的实例:
查询:
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
结果:
Win32_Directory.Name="C:\\"
Win32_ComputerSystem.Name="mycomputer"
Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
与SELECT语句一样,ASSOCIATORS OF语句可以包含一个WHERE子句,但是ASSOCIATORS OF语句的WHERE子句与SELECT语句WHERE子句非常不同。
ASSOCIATORS OF语句的WHERE子句可以包含一个或多个以下预定义关键字及其值:
ASSOCIATORS OF {ObjectPath} WHERE
AssocClass = AssocClassName
ClassDefsOnly
RequiredAssocQualifier = QualifierName
RequiredQualifier = QualifierName
ResultClass = ClassName
ResultRole = PropertyName
Role = PropertyName
请注意,可选的子句不以逗号分隔。
AssocClass关键字表示返回的端点必须通过指定的类或其派生类之一与源相关联。例如,下表中的查询仅返回通过Win32_SystemDevices关联类或其任何派生类与源关联的端点:
查询:
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
WHERE AssocClass = Win32_SystemDevices
结果:
Win32_ComputerSystem.Name="mycomputer"
ClassDefsOnly关键字表示该子句返回类定义对象的结果集,而不是类的实际实例。这些对象是端点实例所属的类的定义。例如,下表中的查询返回Win32_Directory和Win32_ComputerSystem类的定义:
查询:
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
WHERE ClassDefsOnly
结果:
Win32_Directory
Win32_ComputerSystem
Win32_DiskPartition
ClassDefsOnly和ResultClass关键字是相互排斥的,如果一起使用会导致无效的查询错误。
RequiredAssocQualifier关键字表示返回的端点必须通过包含指定限定符的关联类与源对象相关联。这种类型的过滤用于消除端点的宽范围,除非端点通过特定的一组标记的关联类与目标相关联。例如,如果关联类包含名为协会的限定符,则下表中的查询返回端点实例。
查询:
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
WHERE RequiredAssocQualifier = Association
结果:
Win32_Directory.Name="C:\\"
Win32_ComputerSystem.Name="mycomputer"
Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
RequiredQualifier关键字表示与源对象关联的返回端点必须包含指定的限定符。RequiredQualifier关键字可用于在结果集中包含特定类型的实例。例如,下表中的查询返回包含名为语言环境的限定符的端点实例。
查询:
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
WHERE RequiredQualifier = Locale
结果:
Win32_Directory.Name="C:\\"
Win32_ComputerSystem.Name="mycomputer"
Win32_DiskPartition.DeviceID="Disk #0, Partition #0"
ResultClass关键字表示与源对象关联的返回端点必须属于或从指定的类派生。例如,下表中的查询返回从CIM_Directory派生的端点实例:
查询:
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
WHERE ResultClass = Cim_Directory
结果:
Win32_Directory.Name="C:\\"
ClassDefsOnly和ResultClass关键字是互斥的,如果一起使用,将导致无效的查询错误。
ResultRole关键字表示返回的端点必须在与源对象的关联中发挥特定的作用。该角色由指定的属性,类型为REF的引用属性定义。例如,ResultRole关键字可用于检索与源对象关联的所有端点,如以下查询所示。
查询:
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
WHERE ResultRole = GroupComponent
结果:
Win32_ComputerSystem.Name="mycomputer"
角色关键字表示返回的端点参与与源对象发挥特定角色的源对象的关联。该角色由指定的属性,类型为REF的引用属性定义。例如,角色关键字可用于检索与具有GroupComponent属性的源对象相关联的所有端点,如以下查询所示。
查询:
ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
WHERE Role = GroupComponent
结果:
Win32_Directory.Name="C:\\"
注意复杂查询无法使用“And”或“Or”分隔ASSOCIATORS OF和REFERENCES OF语句的关键字。此外,等号是唯一可用于此类查询的有效运算符。例如,以下查询是有效的:
ASSOCIATORS OF {win32_LogicalDisk="C:"}
WHERE resultClass = Win32_Directory requiredQualifier = Dynamic
注意下面的例子是无效的。第一个示例不使用等号,第二个示例错误地尝试使用AND关键字:
Associators of {win32_LogicalDisk="C:"}
where resultClass = Win32_Directory requiredQualifier <> Dynamic
Associators of {win32_LogicalDisk="C:"}
where resultClass = Win32_Directory
AND requiredQualifier = Dynamic