因此,我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
。)
答案 0 :(得分:0)
嗯,这对我有用:从关联器Win32_GroupUser中选择PartComponent后我做了
string path = obj.Properties["PartComponent"].Value.ToString();
ManagementObject mo=new ManagementObject(path);
和mo包含填充的所有属性。你如何填充memberString变量?