因此,我 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
使用该构造函数创建的对象是空的!域,名称,标题,一切,所有null
!除了第一个(本地管理员)。对于那个,构造函数像宣传的那样工作。
为什么会这样?是因为进行查询的用户不是域管理员吗?(不过,它是目标机器上的本地管理员。实际上,它是OUR_DOMAIN\janedoe
。)