从命令提示符中,如何获取域用户的友好显示名称(即“John Doe”而不是“john.doe”)当前登录?从命令提示符处获取当前Windows域用户的显示名称
回答
这里是我做到了,在批处理文件使用net命令find命令一个取巧的办法:
set command=net user "%USERNAME%" /domain | FIND /I "Full Name"
FOR /F "tokens=1 delims=" %%A in ('%command%') do SET fullNameText=%%A
set fullName=%fullNameText:Full Name=%
for /f "tokens=* delims= " %%a in ("%fullName%") do set fullName=%%a
第一行存储,我们希望在一个变量来执行命令。它从环境变量中提取用户名,并将其传递给net user
命令以及/domain
参数,以告知它从当前域中取消。然后它将结果从当前用户的一堆数据中导出到find方法,该方法将只提取我们想要的属性。查找结果的格式为“全名John Doe”。第二行将执行命令并将结果放入变量fullNameText
。第三行将删除结果的“全名”部分,并以“John Doe”结尾。带for循环的第四行将删除结果中的所有前导空格,最后在fullName
变量中出现“John Doe”。
我构建了一个批处理文件,通过使用set p和goto选择一个动作来快速完成一些操作。我要抛弃不必要的部分。
@echo off
:begin
echo 5. Find who is on remote PC right now
echo.
set /p a=
IF %a%==5 (goto whoson)
REM Whos on
:whoson
set /p remotecomputername=Enter computer name to see the current user:
wmic /node:%remotecomputername% computersystem get username
pause
goto begin
我希望它有帮助。
刚导致无限循环的错误提示:无效的全局开关。 –
这里的skeletank's响应这是稍微干净是为我工作...的衍生物(我试过skeletank's响应,并没有工作对我来说它是书面的,因此,下面我的回答方式。)
SET TNAME="net user %USERNAME% /domain| FIND /I "Full Name""
FOR /F "tokens=3,4 delims=, " %%A IN ('%TNAME%') DO SET DNAME=%%B %%A
然后,您可以在任何需要的地方使用“DNAME”,以便输出回声或使用“IF”语句进行验证。您可以翻转'%% B'和'%% A'标记以回到姓氏第一个布局。这节省了skeletank's原始响应中使用的额外努力。
变量:
- TNAME =临时名称
- DNAME =显示名称
-Thanks skeletank。
工作就像一个魅力 – fmuecke
这应该是一个干净的方式使用dsquery和dsget而不依赖于“全名”,这是语言相关的输出,而“FN”似乎与不同语言版本的Windows一起工作。
for /F "tokens=2" %i in ('dsquery user -samid %username% ^| dsget user -L -fn ^| find "fn:"') DO @echo %i
dsget -L开关给出了列出的输出“fn:USER”,所以剩下的唯一东西就是抓住输出中的第二列。 找到“fn:”用于摆脱“dsget succeeded”输出。
win10在cmd执行结果: 用户名“')DO @echo我在这个时候是意外 看起来像它是从机器上不存在的dsquery –
这是格式化的命令行使用。 ,请参阅我的回答,了解命令行和脚本格式之间的区别,该命令需要在运行它的计算机上安装RSAT – Lectrode
如果你想为人类使用 - 这意味着你不需要自动解析它,所以你得到只是的全名 - 你可以在命令提示符下键入net user <username> /domain
,并宣读了“全名”字段。
链接断开,并且当您登录到其他域帐户时此命令不起作用从你的机器连接到,在AD森林 –
@MattKerr,我固定的联系,在一个蝙蝠结果由于 –
接受的答案(在发布的时间)有4行代码,当你只需要一个做同样的事情:
for /f "tokens=2*" %n in ('net user "%USERNAME%" /domain^|FINDSTR /C:"Full Name"') do echo "%o"
这甚至会工作,如果全名已经超过200件。适用于Windows工作站“开箱即用”,不需要管理员权限。
注意:当在批处理文件中使用时,请记住分别将%n
和%o
更改为%%n
和%%o
。
解释命令:
"tokens=2*
指定唯一的令牌,将关注是后(分配到下一个字母:%o
)的第二令牌(分配给%n
),和一切
默认delims
是空格,所以我们不需要定义它,但是如果我们需要手动定义它,它将如下所示:"tokens=2* delims= "
。由于空格是分隔符,因此它将忽略所有前导空格。
管道(|
)被胡萝卜(^
)转义,告诉命令处理器最初忽略它。
我也更喜欢用FINDSTR
而不是FIND
,因为(在我的测试中)我发现它是更快的命令,如果您经常使用它,它可能会有所作为。如果您愿意,可以使用FIND "Full Name"
轻松替换FINDSTR /C:"Full Name"
。
win10 CMD执行: USERNAME“全名”“)是意外的在这个时候。 –
如果用户位于与当前连接到的域不同的域上(但仍位于AD forest w/trust中), 该请求将在域XXX.XXX.XXX的域控制器中处理。 无法找到用户名。 通过键入NET HELPMSG 2221可以获得更多的帮助。 –
OP问题询问命令“来自命令提示符”。我的回答是这样格式化的。但是,我特别说明如何为.bat脚本格式化它,如果您想为此使用它。请参阅“注意”。 – Lectrode
Lectrode answer in one string will be like this:
for /f "usebackq tokens=2,* delims= " %%a in (`net user "%USERNAME%" /domain ^| find /i "Full Name"`) do set FULLNAME=%%b
- 1. 在Windows命令提示符中显示当前的GIT分支名称
- 2. 获取Windows用户显示名称
- 3. 显示%(的Windows 10命令提示符)
- 4. 从命令提示符处复制和重命名文件(Windows)
- 5. 命令提示符在提示符前不显示当前目录
- 6. 从Java中的命令提示符获取用户输入?
- 7. 从Windows命令提示符使用ssh
- 8. Nintex表单获取登录用户显示名称和当前列表名称
- 9. 使用python从命令提示符命令获取值
- 10. 如何获取用户域\用户名和显示名称从SharePoint People Picker InternalId?
- 11. 从当前视图获取JSF导航显示名称
- 12. 从Python控制Windows命令提示符
- 13. 从Windows命令提示符运行R
- 14. 从命令提示符处编译J2ME
- 15. 如何获得USB设备名称通过Windows命令提示符或PowerShell的
- 16. 显示回显区域中最后一个命令的名称
- 17. 如何获得当前日期,通过命令提示符
- 18. 从命令提示符
- 19. 从域\别名组合中获取显示名称
- 20. 不使用任何命令提示符处安装没有命令提示符
- 21. 仅显示当前用户的提醒
- 22. 如何在Windows中获取当前登录用户的域名?
- 23. 从用户处获得后显示播放器名称
- 24. 如何在我的PowerShell提示符中显示当前的git分支名称?
- 25. 在windows命令提示符中获取命令输出的列值
- 26. MS Access显示当前用户没有显示用户名
- 27. 命令提示符中的VIM Windows 10
- 28. 如何获取Active Directory当前用户在ASP.NET Core中显示名称?
- 29. jenkins-cli.jar mail命令从Windows命令提示符发送邮件
- 30. 从Windows命令提示符执行命令可执行文件
我们可以通过运行以下命令行commnad找到计算机的域名。 systeminfo | findstr/B/C:“域” 我们可以使用环境变量'Userdomain'找到登录用户的域。下面给出了这个命令。 echo%userdomain% – Sathish
太棒了!在PowerShell中也是如此:((net user $ env:USERNAME/domain | Select-String“Full Name”)--replace“Full Name”,“”)。Trim() –
我需要围绕%command%逗号在第二行,使其工作:(“‘%命令%’”) – elady