获取ADSI对象的用户的域名?

ca9*_*3d9 2 windows powershell adsi active-directory

在以下脚本中,它将打印组的所有用户。但是,域名丢失了(某些用户位于不同的Windows域中)?

$computer = [ADSI]"WinNT://$server,computer"

$computer.psbase.children | ? { 
    $_.psbase.schemaClassName -eq 'group'
} | % {
    $gn = $_.name.ToString()
    write-host $gn

    write-host "------"
    $group =[ADSI]$_.psbase.Path
    $group.psbase.Invoke("Members") | % {
        $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)
    } 
}
Run Code Online (Sandbox Code Playgroud)

Ans*_*ers 5

尝试获取SID而不是名称,然后将其转换回用户名:

$computer.psbase.children | ? {
    $_.psbase.schemaClassName -eq 'group'
} | % {
    $gn = $_.name.ToString()
    write-host $gn

    write-host "------"
    $group =[ADSI]$_.psbase.Path
    $group.psbase.Invoke("Members") | % {
        $bytes = $_.GetType().InvokeMember('objectSid', 'GetProperty', $null, $_, $null)
        $sid = New-Object Security.Principal.SecurityIdentifier ($bytes, 0)
        $sid.Translate([Security.Principal.NTAccount])
    }
}
Run Code Online (Sandbox Code Playgroud)

结果应包括计算机或域名。