为什么SWbemServices.ExecQuery会返回比请求更多的属性?

问题描述:

我从下面的JScript代码中获得了意想不到的结果。 索引属性即使我只请求MACAddress也会返回。为什么SWbemServices.ExecQuery会返回比请求更多的属性?

这是怎么回事?

的JScript:

var wmi, col, itr, obj; 

wmi = GetObject('winmgmts:'); 
col = wmi.ExecQuery('SELECT MACAddress FROM Win32_NetworkAdapterConfiguration'); 
itr = new Enumerator(col); 

for (; !itr.atEnd(); itr.moveNext()) { 
    obj = itr.item(); 
    itr = new Enumerator(obj.Properties_) 
    for (; !itr.atEnd(); itr.moveNext()) { 
    obj = itr.item(); 
    WSH.echo(obj.name) 
    } 
} 

输出:

Microsoft (R) Windows Script Host Version 5.8 
Copyright (C) Microsoft Corporation. All rights reserved. 

Index 
MACAddress 

此行为是正常的,WMI总是返回(如果存在的话)的关键属性(用于唯一地标识一个属性类的实例)以及WQL语句中指定的其他人。

+0

谢谢你的回答。你知道一个* IsKeyProperty *方法来确定我们得到的物品是否是一个关键属性? – user710307

+0

您必须检查该属性限定符http://msdn.microsoft.com/en-us/library/windows/hardware/ff566365%28v=vs.85%29.aspx – RRUZ