W wierszu polecenia w jaki sposób można uzyskać przyjazną nazwę wyświetlaną (tj. "John Doe" zamiast "john.doe") użytkownika domeny, który jest aktualnie zalogowany?Uzyskaj nazwę wyświetlaną bieżącego użytkownika domeny systemu Windows z wiersza polecenia:
Odpowiedz
Oto trudne sposób, że zrobiłem to za pomocą polecenia net i polecenia find w pliku wsadowym:
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
Pierwsza linia przechowuje polecenie, które chcemy wykonać w zmiennej. Pobiera nazwę użytkownika ze zmiennych środowiskowych i przekazuje ją do komendy net user
, a także do parametru /domain
, aby poinformować, że ma pobrać z bieżącej domeny. Następnie wyprowadza wynik z tego, co jest wiązką danych na bieżącym użytkowniku, do metody find, która spowoduje wyciągnięcie tylko pożądanej właściwości. Rezultatem znaleziska jest format "Full Name John Doe". Druga linia wykona polecenie i umieści wynik w zmiennej fullNameText
. Trzecia linia usunie część wyniku "Full Name" i kończy się na "John Doe". Czwarta linia z pętlą for usunie wszystkie spacje wiodące z wyniku, a skończy się na "John Doe" w zmiennej fullName
.
Zbudowałem plik wsadowy, aby szybko zrobić kilka rzeczy, wybierając akcję za pomocą zestawu p i goto. Zostawiam niepotrzebne części.
@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
Mam nadzieję, że to pomaga.
tylko powoduje nieskończoną pętlę monitów z błędem: Nieprawidłowy globalny przełącznik. –
Oto pochodną skeletank's odpowiedzi, która jest nieco czystsze, że pracował dla mnie ... (próbowałem skeletank's odpowiedź i to nie działa dla mnie sposób, w jaki został napisany, więc moja odpowiedź poniżej.)
SET TNAME="net user %USERNAME% /domain| FIND /I "Full Name""
FOR /F "tokens=3,4 delims=, " %%A IN ('%TNAME%') DO SET DNAME=%%B %%A
Następnie można użyć "DNAME" w dowolnym miejscu, aby ouput z echa lub zatwierdzić za pomocą instrukcji "IF". Możesz odwrócić żetony "%% B" i "%% A", aby powrócić do pierwszego układu nazwiska. Oszczędza to dodatkowego wysiłku zastosowanego w oryginalnej odpowiedzi z skeletank's.
Zmienne:
- tname = tymczasowa nazwa
- dname = Display Name
-Dzięki skeletank.
działa jak zaklęcie – fmuecke
To powinna być czysta metoda, wykorzystująca polecenia dsquery i dsget bez polegania na wynikach "Full Name", które zależą od języka, podczas gdy "fn" wydaje się działać z różnymi wersjami językowymi Windows.
for /F "tokens=2" %i in ('dsquery user -samid %username% ^| dsget user -L -fn ^| find "fn:"') DO @echo %i
Przełącznik dsget -L daje wymienione wyjścia „fn: User”, więc jedyne, co pozostaje, to chwycić drugą kolumnę na wyjściu. find "fn:" służy do pozbycia się wyniku "dsget succeeded".
Wykonanie win10 w cmd: nazwa użytkownika "') DO @echo Byłem nieoczekiwany w tej chwili wygląda na to, że nie jest dostępne na maszynie dsquery –
To jest sformatowane do użycia z linii poleceń. Proszę zapoznać się z moją odpowiedzią na różnicę między linią poleceń a formatowaniem skryptu .To konkretne polecenie wymaga zainstalowania RSAT na komputerze z którego go uruchomiłeś. – Lectrode
Jeśli chcesz go do użytku przez człowieka - co oznacza, że nie muszą automatycznie przetworzy go więc masz tylko pełna nazwa - można po prostu wpisać net user <username> /domain
w wierszu polecenia i przeczytać „Pełna nazwa” pole .
Dotyczy: Getting detailed domain user info from the command line.
Łącze przerwane, a to polecenie nie działa, gdy jesteś zalogowany na inne konto domeny od tego, do czego twoja maszyna jest podłączona, w lesie AD –
@MattKerr, naprawiłem link, dziękuję –
Zaakceptowanych odpowiedź (w chwili nadania) ma 4 linie kodu, kiedy tylko potrzebuję zrobić to samo:
for /f "tokens=2*" %n in ('net user "%USERNAME%" /domain^|FINDSTR /C:"Full Name"') do echo "%o"
to będzie działać, nawet jeśli Pełna nazwa ma więcej niż 2 części . Działa na stacjach roboczych Windows "od razu po wyjęciu z pudełka" i nie wymaga uprawnień administratora.
UWAGA: Pamiętaj, aby odpowiednio zmienić wartości %n
i %o
na %%n
i %%o
podczas korzystania z pliku wsadowego.
Wyjaśnienie komendy:
"tokens=2*
określa, że jedynymi tokeny będzie zwracać uwagę na to 2nd tokena (przypisany do %n
), a wszystko po to (przypisanego do następnej litery: %o
)
Domyślna delims
to spacja, więc nie musimy jej definiować, ale jeśli będziemy musieli ręcznie ją zdefiniować, będzie to: "tokens=2* delims= "
. Ponieważ spacja jest ogranicznikiem, zignoruje wszystkie pola wiodące.
Rura() została usunięta przez marchewkę (^
), nakazując procesorowi poleceń, aby początkowo ją zignorowała.
Ja również wolę używać FINDSTR
zamiast, ponieważ (w moich testach) stwierdziłem, że jest to szybsze polecenie, co może mieć znaczenie, jeśli często go używasz. FINDSTR /C:"Full Name"
może być łatwo zastąpiony przez FIND "Full Name"
, jeśli wolisz.
wykonanie polecenia win10 cmd w wynikach .bat w: USERNAME "Full Name" ") było nieoczekiwane w tym momencie. –
nie działa, jeśli użytkownik znajduje się w innej domenie niż to, do którego jest aktualnie podłączony (ale nadal znajduje się w lesie AD w zaufaniu), Żądanie zostanie przetworzone na kontrolerze domeny dla domeny XXX.XXX.XXX. Nie można znaleźć nazwy użytkownika. Więcej pomocy można uzyskać, wpisując NET HELPMSG 2221. –
Pytanie OP o polecenie "Z wiersza poleceń". Moja odpowiedź jest sformatowana jako taka. Jednakże, konkretnie mówię o tym, jak sformatować go dla skryptu .bat, jeśli zechcesz go użyć. Zobacz "UWAGA". – 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
Należy pamiętać, że jest to sformatowane dla skryptu bat lub cmd. To nie zadziała "Z wiersza poleceń", ponieważ OP zadeklarował powyżej – Lectrode
'' 'for/f" usebackq tokeny = 2, * delims = "% a in (" net user "% USERNAME%"/domain^| find/i " Pełna nazwa "') ustaw FULLNAME =% b''''/Po prostu zmień dwukrotnie %% na% i będzie działać z CMD /// – kgimpel
- 1. Uzyskaj nazwę użytkownika Windows bieżącego użytkownika za pomocą php?
- 2. Uzyskaj zalogowaną nazwę użytkownika systemu Windows skojarzoną z pulpitem
- 3. Uzyskaj domyślną nazwę drukarki z wiersza poleceń?
- 4. Uruchamianie R z wiersza polecenia systemu Windows
- 5. Uzyskaj nazwę bieżącego środowiska
- 6. Jak mogę zmienić wyświetlaną nazwę wydawcy systemu Windows 8?
- 7. Program wiersza polecenia systemu Windows drugiej firmy?
- 8. Uzyskaj nazwę komputera w usłudze systemu Windows?
- 9. Uzyskaj nazwę domeny z adresu e-mail
- 10. Uzyskaj nazwę domeny z pełnego adresu URL
- 11. Uzyskaj wersję TCL z wiersza polecenia?
- 12. Powiadomienie usługi powiadamiania systemu Windows 8 z wiersza polecenia
- 13. Jak wygenerować klucz publiczny z wiersza polecenia systemu Windows
- 14. Uzyskaj pełną nazwę urządzenia audio z systemu Windows
- 15. Jak uzyskać nazwę użytkownika/wyświetlaną nazwę w BuddyPress?
- 16. Uzyskaj nazwę użytkownika w uwierzytelnianiu formularzy
- 17. jak uzyskać nazwę użytkownika Windows w WPF
- 18. Jak uzyskać nazwę bieżącego użytkownika systemu Windows w formacie nazwa_użytkownika @ domena?
- 19. Uzyskaj nazwę użytkownika w konstruktorze kontrolera?
- 20. Uzyskaj nazwę testu bieżącego w Xunit
- 21. Uzyskaj nazwę bieżącego kontrolera w AngularJS
- 22. AspNet5 - Windows Uwierzytelnianie Uzyskaj nazwę grupy z roszczeń
- 23. wyświetla aktualną nazwę gałęzi GIT w wierszu polecenia systemu Windows
- 24. Jak zaktualizować widok uproszczeń za pomocą wiersza polecenia systemu Windows?
- 25. Reputacja StackOverflow przy użyciu wiersza polecenia systemu Windows (cmd.exe)
- 26. Uzyskaj nazwę użytkownika z URL w PHP
- 27. Python: Czy można zmienić bieżący katalog powłoki wiersza poleceń systemu Windows bez zmiany bieżącego katalogu bieżącego?
- 28. Uzyskaj folder Pulpit użytkownika za pomocą interfejsu API systemu Windows?
- 29. Uzyskaj nazwę użytkownika systemu Windows w starszej wersji (nie w rozszerzeniach WebExtensions)
- 30. Znajdź nazwę użytkownika systemu Windows w folderze R
Możemy znaleźć nazwę domeny komputera, uruchamiając następujące commnad z linii poleceń. systeminfo | findstr/B/C: "Domena" Znaleźliśmy domenę zalogowanego użytkownika przy użyciu zmiennej środowiskowej "Userdomain". Polecenie do tego podano poniżej. echo% userdomain% – Sathish
Świetnie! Działa także w PowerShell: ((użytkownik netto $ env: NAZWA_UŻYTKOWNIKA/domena | Select-String "Pełna nazwa") -replace "Pełna nazwa", ""). Trim() –
Musiałem otoczyć% command% z odwróceniem przecinki w drugim wierszu, aby działały: (""% command% "') – elady