我正在尝试通过查询获取用户和组的 SID
get-wmiobject -query 'select groupcomponent,partcomponent from win32_groupuser`
输出:
__GENUS : 2
__CLASS : Win32_GroupUser
__SUPERCLASS :
__DYNASTY :
__RELPATH : Win32_GroupUser.GroupComponent="\\\\COMPUTER\\root\\cimv2:Win32_Group.Domain=\"TESTDOMAIN\",Name=\
"Schema Admins\"",PartComponent="\\\\COMPUTER\\root\\cimv2:Win32_UserAccount.Domain=\"TESTDOMAIN\"
,Name=\"Administrator\""
__PROPERTY_COUNT : 2
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
GroupComponent : \\COMPUTER\root\cimv2:Win32_Group.Domain="TESTDOMAIN",Name="Schema Admins"
PartComponent : \\COMPUTER\root\cimv2:Win32_UserAccount.Domain="TESTDOMAIN",Name="Administrator"
groupcomponent
是win32_group
(https://msdn.microsoft.com/en-us/library/windows/desktop/aa394153%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396)。
win32_group
包含 SID(https://msdn.microsoft.com/en-us/library/windows/desktop/aa394151%28v=vs.85%29.aspx#)
但是这里的 groupcomponent 是一个字符串,而不是 win32_group,因为
get-wmiobject -query 'select groupcomponent.sid from win32_groupuser'
是无效查询。我如何才能groupcomponent
以 的身份访问 的成员win32_group
?
答案1
PartComponent 属性包含 SID。通过 WMI 遍历所有对象来访问它:
gwmi win32_groupuser | % { [wmi]$_.partcomponent }
或使用
gwmi win32_groupuser | % { [wmi]$_.partcomponent | select SID }
仅接收 SID。