【问题标题】:Get the domain name of the user of ADSI object?获取ADSI对象用户的域名?
【发布时间】:2015-09-19 06:58:21
【问题描述】:

在以下脚本中,它将打印组的所有用户。但是,缺少域名(某些用户在不同的 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)
    } 
}

【问题讨论】:

  • 请不要移动目标。如果您有新问题:提出新问题。

标签: windows powershell active-directory adsi


【解决方案1】:

尝试获取 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])
    }
}

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

【讨论】:

    【解决方案2】:

    我们有一个类似的问题,即计算机上有来自不同域的帐户,我们需要该域。不幸的是,在某些情况下,我认为 SID 提取对于本地帐户和计算机曾经加入的域不起作用,因此它没有返回所有结果。

    这是我为我们找到的最佳解决方案:

    Admin = $_.GetType().InvokeMember("AdsPath", 'GetProperty', $null, $_, $null)
    

    将返回类似

    的结果
    WinNT://#domain#/#account#
    

    WinNT://#domain of computer#/#computer-name#/#account#

    本地帐户

    $servers= get-content 'C:\temp\work\localadmins\serverlist_in.txt'
    $output = 'C:\temp\work\localadmins\serverlist_out.csv' 
    $results = @()
    
    foreach($server in $servers)
    {
        $admins = @()
        $group =[ADSI]"WinNT://$server/Administrators" 
        $members = @($group.psbase.Invoke("Members"))
        $members | foreach {
           $obj = new-object psobject -Property @{
               Server = $Server
               Admin = $_.GetType().InvokeMember("AdsPath", 'GetProperty', $null, $_, $null)
           }
           $admins += $obj
        } 
        $results += $admins
    }
    $results | Export-csv $Output -NoTypeInformation
    

    【讨论】:

      猜你喜欢
      • 2014-07-26
      • 2020-08-31
      • 2011-06-21
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多