AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 27223
Accepted
Hawkeye
Hawkeye
Asked: 2009-06-18 05:12:27 +0800 CST2009-06-18 05:12:27 +0800 CST 2009-06-18 05:12:27 +0800 CST

命令行活动目录查询用户名的电子邮件地址

  • 772

在 Active Directory 环境中的 Windows XP 上 - 对于我来说,在命令行上给定用户名的情况下,从 AD 查询用户电子邮件地址的最简单方法是什么。

(假设我知道它通常保存在树的哪个位置)。

(我知道网络用户登录名/域,但我只想要电子邮件地址元素。)

email command-line-interface active-directory user-accounts query
  • 11 11 个回答
  • 148785 Views

11 个回答

  • Voted
  1. Best Answer
    pQd
    2009-06-18T05:21:55+08:002009-06-18T05:21:55+08:00
    dsquery user -name "user name"|dsget user -samid -email -display 
    
    • 20
  2. TheCleaner
    2009-06-18T05:22:49+08:002009-06-18T05:22:49+08:00

    dsquery 用户名“名姓”| dsget 用户 - 电子邮件

    • 7
  3. krispy
    2015-03-19T10:34:15+08:002015-03-19T10:34:15+08:00

    如果您想要的电子邮件也是用户主体名称,您可以使用

    whoami /upn
    

    但是,这仅适用于获取当前用户的电子邮件,而不是最初假设的任何用户的电子邮件。

    • 6
  4. BrianP
    2009-06-18T05:19:55+08:002009-06-18T05:19:55+08:00

    像这样的 dsquery 可能会起作用。

    通过用户名 dsquery.exe * -filter "(&(objectClass=user)(!(objectClass=computer)(sAMAccountName=username)))" | 查询电子邮件 dsget 用户 - 电子邮件

    我首先误读了帖子,并认为您想要电子邮件名称中的用户名。这就是我发布这个的原因。dsquery.exe * -filter "(&(objectClass=user)(!(objectClass=computer)([email protected])))" -attr username

    基于工作中的一些脚本和这个网站有一些关于使用 csvde.exe的其他想法http://www.petri.co.il/forums/showthread.php?t=18464

    • 5
  5. benPearce
    2009-06-19T17:32:51+08:002009-06-19T17:32:51+08:00

    adfind -sc u:"用户名" 邮件

    • 4
  6. Neobyte
    2009-06-18T05:18:08+08:002009-06-18T05:18:08+08:00

    安装 Powershell 和 QuestAD 插件包。然后是这样的:

    connect-qadservice
    (get-qaduser 'bobsusername').emailAddress
    
    • 2
  7. Bogdan_Ch
    2009-06-18T06:33:03+08:002009-06-18T06:33:03+08:00

    您可以编写简单的 VBScript 以通过 LDAP 进行查询 创建具有 VBS 扩展名的文件

    放入这样的东西

    On Error Resume Next
    Set objUser = GetObject _
      ("LDAP://CN=USER NAME,DC=DOMAIN_NAME,DC=com")
    
    objUser.GetInfo
    
    strMail = objUser.Get("mail")
    
    WScript.echo "mail: " & strMail 
    

    将正确的用户名放入 LDAP 查询字符串,运行 VBS 文件并享受 :)

    如果这是您第一次使用 LDAP,编写 LDAP 查询可能会有点复杂为了识别用户的 LDAP 路径(即您需要放在 LDAP:// 之后的内容),您可以下载Active Directory Microsoft 运行资源管理器中的资源管理器,导航到用户并查看它在路径文本框中显示的内容

    就我而言,它类似于 CN=[user name],CN=Users,DC=[city_name],DC=[company_name],DC=com,

    • 2
  8. What Would Be Cool
    2013-03-26T11:04:06+08:002013-03-26T11:04:06+08:00

    LINQ到一切!为了方便:

    1) 在 LinqPad 的查询属性中,添加对 System.DirectoryServices.AccountManagement.dll 的引用。2) 附加命名空间导入:System.DirectoryServices.AccountManagement

    using(PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "MyDomain))
      using(UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, "MyUserID"))
            usr.Dump();
    
    • 2
  9. Jörgen in Sweden
    2014-04-24T01:06:31+08:002014-04-24T01:06:31+08:00

    发现这个线程帮助我得到了我想要的东西。将任何 AD 用户属性放入环境变量中。此脚本从登录用户获取所有想要的属性并设置相应的环境变量。我为变量添加了前缀,但这是可选的,因此变量名称变为“AD [属性名称]”。属性是您的选择,只需在 -attr 之后添加或删除您的属性。虽然对于多值属性不是很有用。最后一个(一个)值进入环境变量。

    此脚本是当前 cmd.exe 的本地脚本

    for /F "tokens=1,* delims=: " %%A in ('dsquery * domainroot -l -filter "(&(objectCategory=Person)(objectClass=User)(sAMAccountName=%USERNAME%))" -attr adminDescription employeetype company department physicalDeliveryOfficeName street title mail') do set AD%%A=%%B
    

    要在 Windows 中获取全局环境变量,我们可以在 Windows 7 中使用“setx”。(对于登录脚本也许......但要慢得多。)

    for /F "tokens=1,* delims=: " %%A in ('dsquery * domainroot -l -filter "(&(objectCategory=Person)(objectClass=User)(sAMAccountName=%USERNAME%))" -attr adminDescription employeetype company department physicalDeliveryOfficeName street title mail') do set AD%%A=%%B& setx AD%%A "%%~B" > NUL
    

    :EDIT: 示例 2 中 set 语句末尾的空格字符导致值以空格结尾。将其删除以更正。( Set %%A=%%B& setx... ) 还发现必须至少导出两个属性才能使脚本正常工作。

    回复晚了,但如果它可以帮助那里的任何人,我很高兴。

    • 2
  10. Rhak Kahr
    2013-07-10T20:54:29+08:002013-07-10T20:54:29+08:00

    我不知道它是否与线程启动器的意思相匹配。但我只是找到了我现有问题的解决方案,在浏览这个帖子后已经解决了。根据 KNOWN MAIL ADDRESS 查找 USER LOGIN ID。:)

    C:\Users\MrCMD>for /f "delims=" %u in ('type salesforce-uid-mail-address.txt') do @dsquery.exe * -filter "(&(objectClass=user)(!(objectClass=computer)(mail=%u)))">>"salesforce-uid-cn.txt"
    ┌─────────────────────────────────────┐
    │ Executed Wed 07/10/2013  8:29:55.05 │ As [MrCMD]
    └─────────────────────────────────────┘
    C:\Users\MrCMD>for /f "delims=" %u in ('type salesforce-uid-cn.txt') do @dsget.exe user %u -samid -l|find "samid" /i>>"salesforce-uid-samid.txt"
    ┌─────────────────────────────────────┐
    │ Executed Wed 07/10/2013  8:31:56.40 │ As [MrCMD]
    └─────────────────────────────────────┘
    

    文件 [ salesforce-uid-mail-address.txt ] 包含电子邮件地址列表。文件 [ salesforce-uid-cn.txt ] 包含“带有路径的完整 CN”。并且文件 [ salesforce-uid-samid.txt ] 包含“找到的 SAMID”别名“用户登录名”。这就是所有人。欢迎任何改进的想法。:)

    • 1

相关问题

  • 使用 AD 在特定时间段内阻止对特定网站的访问

  • 针对大量邮件的 SMTP 服务的建议 [关闭]

  • 在登录期间打开 URL 的现代方法是什么?

  • 多操作系统环境的首选电子邮件客户端

  • Exchange 2007 的备份解决方案

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve