从 win32_groupuser 获取 SID

从 win32_groupuser 获取 SID

我正在尝试通过查询获取用户和组的 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"

groupcomponentwin32_grouphttps://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。

相关内容