На члене домена Active Directory под управлением Windows 7 у меня есть локальная группа. В него входят пользователи и другие группы:
Как я могу получить SID для каждого члена этой локальной группы? Я знаю об утилите Sysinternals PSGetSid но, похоже, он не может перечислить членов группы.
Вот функция Powershell, которую вы должны уметь использовать. Я тестировал его только в Windows 10, но не думаю, что он использует что-то, чего не было в Windows 7.
Function Get-LocalGroupMembers {
[Cmdletbinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$GroupName
)
[adsi]$adsiGroup = "WinNT://$($env:COMPUTERNAME)/$GroupName,group"
$adsiGroup.Invoke('Members') | %{
$username = $_.GetType().InvokeMember('Name','GetProperty',$null,$_,$null)
$path = $_.GetType().InvokeMember('AdsPath','GetProperty',$null,$_,$null).Replace('WinNT://','')
$class = $_.GetType().InvokeMember('Class','GetProperty',$null,$_,$null)
$userObj = New-Object System.Security.Principal.NTAccount($username)
$sid = $userObj.Translate([System.Security.Principal.SecurityIdentifier])
[pscustomobject]@{
Username = $username
Type = $class
SID = $sid
Path = $path
}
}
}