Назад | Перейти на главную страницу

Получить SID для каждого члена локальной группы

На члене домена 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
    }

}

}