在 Windows 10/11 中,用户最容易找到 Active Directory 中其用户名的大小写(大写或小写字母)的方法是什么,就像它在 AD 中规范存储的那样?
例如,对于用户名为的人HarveyHope
,获取的正是该字符串,而harveyhope
在其它情况下则不获取或获取相同的字母?
环境%USERNAME%
变量和whoami
命令返回用户登录工作站时输入的用户名:因此,对于以全部小写字母登录的用户,它会显示其用户名全部小写;对于以混合大小写字母登录的用户,它会显示混合大小写,等等。
我发现最好的方法是让用户打开命令提示符并输入:
net /domain user %USERNAME% | findstr User.name
无论他们如何输入用户名进行登录,都会以相同的方式返回用户名。有没有更简单的方法(更少的标点符号或其他不太可能导致用户错误的方法)来实现这一点?谢谢。
答案1
不要让用户输入
%USERNAME%
(这对于 PowerShell 来说无论如何都是错误的语法),而是让他们在 之后输入他们的实际用户名net user /dom
。他们已经习惯输入它了。另一个命令可能无需任何参数即可工作的方法是
klist
查看您的 Kerberos 票证。“客户端”Kerberos 主体名称由 sAMAccountName 组成(在 AD 中),据我所知,它在初始票证检索期间始终是规范化的 - 虽然我不能 100% 确定这是否有效,但它大约有 80% 的可能性有效。
任何更简单的东西(更少的标点符号或不太可能导致用户错误)
是的——将复杂的东西放在脚本中,放在文件共享上,然后让用户按路径运行它:
\\ad.example.com\netlogon\whoami
...或者甚至通过 GPO 将脚本直接部署到每个用户的 C:\Windows;然后他们只需按名称即可运行它,例如C:\> who
或(如果您将其设置为显示 GUI 弹出窗口的 .vbs)通过“开始”菜单运行它。(就此而言,您可以直接部署脚本进入开始菜单;它只是一个文件夹。
(你甚至可以做一个网站接受 Kerberos 身份验证并向用户显示其用户名;对于 Apache2,这将是 mod_auth_gssapi – 如果 Kerberos“klist”方法有效,则 webapp 可以只有一行显示收到的 Kerberos 主体;如果没有,则 webapp 可以在 LDAP 中找到用户。)
如果用户不必输入命令,那么实际命令有多复杂都没关系。