如何通过 SID 获取(AD)LDAP 人员条目?

如何通过 SID 获取(AD)LDAP 人员条目?

给定用户或组的 SID,如何找到属于它的 LDAP 对象?
LDAP 服务器是 Active Directory(Windows Server 2008)。

LDAP 查询字符串将会很有用。

答案1

我希望它像这样简单:

dsget user "objectSID={thesid},CN=Users,DC=domain,DC=com" -samid

但事实并非如此;AD 将 objectSID 存储为十六进制。

不过,serverfault 上的人们写了一些可能有帮助的答案:

使用 SID 从 Active Directory 检索用户详细信息

答案2

另一种方法是放弃 LDAP 并使用 WMIC:

H:\>wmic useraccount where (sid = "S-1-5-21-1698188384-1693678267-1543859470-6637") get * /format:list    

AccountType=512
Caption=MYDOMAIN\quux
Description=some guy's account
Disabled=FALSE
Domain=MYDOMAIN
FullName=Some Guy
InstallDate=
LocalAccount=FALSE
Lockout=FALSE
Name=quux
PasswordChangeable=TRUE
PasswordExpires=FALSE
PasswordRequired=TRUE
SID=S-1-5-21-1698188384-1693678267-1543859470-6637
SIDType=1
Status=OK

现在,如果您仍然需要的话,您有几个可以通过 LDAP 轻松搜索的属性。

答案3

它是使用 LDAP 查询按 SID 进行搜索。例如:

dsquery * domainroot -filter "(objectSid=S-1-5-21-blah-blah-blah-500)"

或者,在 PowerShell 中,

Get-ADuser -LDAPFilter '(objectSid=S-1-5-21-blah-blah-blah-500)'

如果您在域值中输入 ,将会获得域管理员帐户blah-blah-blah

答案4

我看到这个已经很旧了,但是你可以在 ADUC 中通过转到自定义搜索并单击高级选项卡来执行此操作。

LDAP 查询字符串为:(objectSID=SID)

将“SID”替换为您要查找的 SID。

我必须使用以下代码在 PowerShell 中将 SID 转换为名称,然后再转换回 SID(对于外部安全主体):

function Find_By_SID($SID) {

    //Searches Active Directory by SID
    //Returns NetBios Name 
    // Example output: CONTOSO\User1

    $account = New-Object Security.Principal.SecurityIdentifier("$SID")
    $netbios = $account.Translate([Security.Principal.NTAccount])

    return $netbios.Value

}

相关内容