从命令行,如何使用专有名称查找 NT 样式的名称?也就是说,我想输入“CN=Alice Smith,OU=Head Office,DC=Cyberdyne,DC=local”并输出“CYBERDYNE\ASmith”
编辑:Active Directory 级别 2003(如果重要的话)。
答案1
我认为您正在寻找 sAMAccountname??
请尝试以下操作...
dsquery * “CN=Alice Smith,OU=Head Office,DC=Cyberdyne,DC=local”-scope base-attr sAMAccountName
尽管这没有得到 DOMAIN\ 前缀 (CYBERDYNE)
注意:我认为 dsquery 仅安装在 DC 上,如果您想在其他地方运行它,则可能必须从 DC 获取副本...
..肯
答案2
也许我没能及时回答你的问题,以节省你在给 Ken Hughes 的评论中提到的“手工”劳动。要以编程方式执行此操作,你正在考虑使用iADsNameTranslate接口。您可以从中获得很多好处,用于翻译 AD 帐户的各种可能名称(GUID、SID、samAccountName、displayName、DN 等)。
例子:
Option Explicit
' Constants for the iADsNameTranslate object. (from http://msdn.microsoft.com/en-us/library/aa772267(VS.85).aspx)
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
Const ADS_NAME_INITTYPE_GC = 3
Dim objNameTranslate
Dim strUsersamAccountName
' Create a nametranslate object and init to talk to a global catalog server
Set objNameTranslate = CreateObject("NameTranslate")
objNameTranslate.Init ADS_NAME_INITTYPE_GC, ""
' We're looking for a distinguished name, aka 1779
objNameTranslate.Set ADS_NAME_TYPE_1779, "CN=Bob, OU=blah, ..."
' Translate into the user's samAccountName
strUsersamAccountName = objNameTranslate.Get(ADS_NAME_TYPE_NT4)
WScript.Echo strUsersamAccountName