在 Active Directory 环境中的 Windows XP 上 - 对于我来说,在命令行上给定用户名的情况下,从 AD 查询用户电子邮件地址的最简单方法是什么。
(假设我知道它通常保存在树的哪个位置)。
(我知道网络用户登录名/域,但我只想要电子邮件地址元素。)
在 Active Directory 环境中的 Windows XP 上 - 对于我来说,在命令行上给定用户名的情况下,从 AD 查询用户电子邮件地址的最简单方法是什么。
(假设我知道它通常保存在树的哪个位置)。
(我知道网络用户登录名/域,但我只想要电子邮件地址元素。)
dsquery 用户名“名姓”| dsget 用户 - 电子邮件
如果您想要的电子邮件也是用户主体名称,您可以使用
但是,这仅适用于获取当前用户的电子邮件,而不是最初假设的任何用户的电子邮件。
像这样的 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
adfind -sc u:"用户名" 邮件
安装 Powershell 和 QuestAD 插件包。然后是这样的:
您可以编写简单的 VBScript 以通过 LDAP 进行查询 创建具有 VBS 扩展名的文件
放入这样的东西
将正确的用户名放入 LDAP 查询字符串,运行 VBS 文件并享受 :)
如果这是您第一次使用 LDAP,编写 LDAP 查询可能会有点复杂为了识别用户的 LDAP 路径(即您需要放在 LDAP:// 之后的内容),您可以下载Active Directory Microsoft 运行资源管理器中的资源管理器,导航到用户并查看它在路径文本框中显示的内容
就我而言,它类似于 CN=[user name],CN=Users,DC=[city_name],DC=[company_name],DC=com,
LINQ到一切!为了方便:
1) 在 LinqPad 的查询属性中,添加对 System.DirectoryServices.AccountManagement.dll 的引用。2) 附加命名空间导入:System.DirectoryServices.AccountManagement
发现这个线程帮助我得到了我想要的东西。将任何 AD 用户属性放入环境变量中。此脚本从登录用户获取所有想要的属性并设置相应的环境变量。我为变量添加了前缀,但这是可选的,因此变量名称变为“AD [属性名称]”。属性是您的选择,只需在 -attr 之后添加或删除您的属性。虽然对于多值属性不是很有用。最后一个(一个)值进入环境变量。
此脚本是当前 cmd.exe 的本地脚本
要在 Windows 中获取全局环境变量,我们可以在 Windows 7 中使用“setx”。(对于登录脚本也许......但要慢得多。)
:EDIT: 示例 2 中 set 语句末尾的空格字符导致值以空格结尾。将其删除以更正。( Set %%A=%%B& setx... ) 还发现必须至少导出两个属性才能使脚本正常工作。
回复晚了,但如果它可以帮助那里的任何人,我很高兴。
我不知道它是否与线程启动器的意思相匹配。但我只是找到了我现有问题的解决方案,在浏览这个帖子后已经解决了。根据 KNOWN MAIL ADDRESS 查找 USER LOGIN ID。:)
文件 [ salesforce-uid-mail-address.txt ] 包含电子邮件地址列表。文件 [ salesforce-uid-cn.txt ] 包含“带有路径的完整 CN”。并且文件 [ salesforce-uid-samid.txt ] 包含“找到的 SAMID”别名“用户登录名”。这就是所有人。欢迎任何改进的想法。:)