【发布时间】:2011-01-27 19:50:57
【问题描述】:
所以,我 WMI 查询远程计算机以获取其 Administrators 组的成员:
SELECT PartComponent FROM Win32_GroupUser WHERE GroupComponent = "Win32_Group.Domain='MACHINE_NAME',Name='Administrators'"
它将PartComponent 属性作为字符串返回。这是列表(为安全起见更改了名称)。域用户joeblow 和janedoe 确实是该机器的本地管理员。
\\MACHINE_NAME\root\cimv2:Win32_UserAccount.Domain="MACHINE_NAME",Name="localadmin"
\\MACHINE_NAME\root\cimv2:Win32_Group.Domain="OUR_DOMAIN",Name="Domain Admins"
\\MACHINE_NAME\root\cimv2:Win32_UserAccount.Domain="OUR_DOMAIN",Name="joeblow"
\\MACHINE_NAME\root\cimv2:Win32_UserAccount.Domain="OUR_DOMAIN",Name="janedoe"
我循环遍历上面的结果。在其中,我执行以下操作:
ManagementObject isInThisUser = new ManagementObject(memberString);
我这样做是为了从每个成员对象中提取 Domain 和 Name 属性。在一个完美的世界中,我将获得以下字符串列表作为最终结果:
\\MACHINE_NAME\localadmin
\\OUR_DOMAIN\Domain Admins
\\OUR_DOMAIN\joeblow
\\OUR_DOMAIN\janedoe
但实际情况如下:使用该构造函数创建的ManagementObject 对象出现empty!域名,名称,标题,一切,所有null!除了第一个(本地管理员)。对于那个,构造函数就像宣传的那样工作。
为什么会这样?是因为进行查询的用户不是域管理员吗? (不过,它是目标机器上的本地管理员。实际上,它是OUR_DOMAIN\janedoe。)
【问题讨论】: