從命令提示符中,如何獲取域用戶的友好顯示名稱(即「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