如何根据电子邮件地址查找 Windows 用户的 DOMAIN\login?

如何根据电子邮件地址查找 Windows 用户的 DOMAIN\login?

我们 Windows 网络上的大多数应用程序都通过电子邮件地址识别用户(例如 Outlook、Lync、Windows 安全对话框等)。但是,某些工具(例如 SQL Server Reporting Services)在指定用户时仅接受 DOMAIN\login 格式。

如何根据用户的电子邮件地址查找用户的域名\登录名?

答案1

让我们在这里澄清一些误解。您域中的用户用来验证您提到的示例(Outlook、Lync、Windows 安全对话框)的用户名不是实际上是电子邮件地址。它可能看起来像电子邮件地址,并且在特定域中,它甚至可能与用户的电子邮件地址相同。但正如@Zordache 在其评论中指出的那样,它实际上是用户主体名称(UPN)。默认情况下,它往往是用户SAM 帐户名称属性和域的 FQDN 以“@”字符分隔:<sAMAccountName>@<domain FQDN>。但从技术上讲,它可以是任何东西,只要它在林中以及与其交互的任何其他林中都是唯一的(感谢 HopelessN00b 的澄清)。

您正在寻找的用户名形式是指定 AD 用户名的传统方式,该用户名使用域的 NetBIOS 名称(短名称)和由“\”字符分隔的 SAM-Account-Name 值:<domain short name>\<sAMAccountName>

@MTS,@HopelessN00b 的评估是正确的,您的答案在技术上并不正确,即使它适用于您的特定环境。至少,DSQUERY 命令中的过滤器参数应该代替userPrincipalName属性mail。但请允许我建议一种基于 PowerShell 的替代方案,该方案使用内置的 ActiveDirectory 模块(假设您已启用该功能)。

import-module ActiveDirectory
$domain = (get-addomain).NetBIOSName
$samaccountname = (get-aduser -ldapfilter "([email protected])").sAMAccountName
$legacyUsername = "$domain\@samaccountname"

答案2

这是我自己能想到的办法,但似乎应该有更简单的方法。

  1. 下载并安装 DSQUERY(及相关实用程序)。
    请参阅在哪里可以获得 dsquery 和其他有助于调试 Active Directory 问题的工具?

  2. 从命令行:

    DSQUERY * domainroot -filter "(&(objectCategory=Person)(objectClass=User)(mail=%1))”-attr sAMAccountName

    (代替%1使用您正在搜索的电子邮件地址。)

相关内容