Dal prompt dei comandi, come posso ottenere il nome di visualizzazione descrittivo (ovvero "John Doe" anziché "john.doe") dell'utente di dominio che è attualmente connesso?Ottieni un nome visualizzato dell'utente di dominio Windows corrente da un prompt dei comandi
risposta
Ecco un modo difficile che ho fatto utilizzando il comando net e il comando find in un file batch:
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
La prima riga memorizza il comando che vogliamo eseguire in una variabile. Estrae il nome utente dalle variabili di ambiente e lo passa nel comando net user
e nel parametro /domain
per dirgli di estrarre dal dominio corrente. Quindi, analizza il risultato da ciò, che è un insieme di dati sull'utente corrente, a un metodo di ricerca che estrae solo la proprietà che vogliamo. Il risultato del ritrovamento è nel formato "Nome completo John Doe". La seconda riga eseguirà il comando e inserirà il risultato nella variabile fullNameText
. La terza riga rimuoverà la parte "Full Name" del risultato e finirà con "John Doe". La quarta riga con il ciclo for rimuoverà tutti gli spazi iniziali dal risultato e si finirà con "John Doe" nella variabile fullName
.
Ho creato un file batch per fare alcune cose rapidamente selezionando un'azione utilizzando set p e goto. Sto lasciando fuori le parti non necessarie.
Spero che sia d'aiuto.
solo genera un loop infinito di prompt con errore: Global Switch non valido. –
Ecco un derivato del skeletank's risposta che è un po 'più pulito che ha funzionato per me ... (ho provato skeletank's risposta e non ha funzionato per me il modo in cui è stato scritto, così la mia risposta qui sotto.)
SET TNAME="net user %USERNAME% /domain| FIND /I "Full Name""
FOR /F "tokens=3,4 delims=, " %%A IN ('%TNAME%') DO SET DNAME=%%B %%A
Quindi è possibile utilizzare "DNAME" ovunque sia necessario per uscire con un'eco o convalidare con un'istruzione "IF". Puoi girare i token '%% B' e '%% A' in giro per tornare al primo layout del cognome. Ciò consente di risparmiare lo sforzo aggiuntivo utilizzato nella risposta originale skeletank's.
Variabili:
- TNAME = nome temporaneo
- DNAME = Nome visualizzato
-Grazie skeletank.
funziona come un fascino – fmuecke
Questo dovrebbe essere un modo pulito utilizzando dsquery e dsget senza fare affidamento sull'output di "Nome completo", che dipende dalla lingua, mentre "fn" sembra funzionare con versioni linguistiche di Windows diverse.
for /F "tokens=2" %i in ('dsquery user -samid %username% ^| dsget user -L -fn ^| find "fn:"') DO @echo %i
L'interruttore dsget -L dà l'uscita elencato "fn: USER" così l'unica cosa rimasta è quella di afferrare la seconda colonna nell'output. find "fn:" è usato per eliminare l'output "dsget riuscito".
win10 esecuzione in cmd risulta in: nome utente "') DO @echo ero inatteso in questo momento. sembra che provenga da dsquery non esistente sulla macchina –
Questo è formattato per l'utilizzo dalla riga di comando. , fai riferimento alla mia risposta per la differenza tra la riga di comando e la formattazione dello script.Questo particolare comando richiede RSAT installato sul computer da cui lo hai eseguito. Il collegamento – Lectrode
Se lo vuoi per uso umano - il che significa che non c'è bisogno di analizzare automaticamente in modo da ottenere appena il nome completo - si può semplicemente digitare net user <username> /domain
al prompt dei comandi, e leggere il "nome completo" campo .
Riferimento: Getting detailed domain user info from the command line.
non funziona, e questo comando non funziona quando hai effettuato l'accesso a un altro account di dominio da quello a cui è collegato il tuo computer, in una foresta AD –
@MattKerr, ho corretto il collegamento, grazie. –
La risposta accettata (al momento del distacco) ha 4 linee di codice, quando hai solo bisogno uno per fare la stessa cosa:
for /f "tokens=2*" %n in ('net user "%USERNAME%" /domain^|FINDSTR /C:"Full Name"') do echo "%o"
Ciò funzionerà anche se il nome completo ha più di 2 parti . Funziona su workstation Windows "out of the box" e non richiede diritti di amministratore.
NOTA: Ricordarsi di modificare %n
e %o
in %%n
e %%o
, rispettivamente, quando si utilizza in un file batch.
Spiegazione del comando:
"tokens=2*
specifica che gli unici gettoni sarà prestare attenzione sono il secondo gettone (assegnato a %n
), e tutto quello che segue (assegnato alla lettera successiva: %o
)
Il valore predefinito delims
è lo spazio, quindi non è necessario definirlo, ma se è necessario definirlo manualmente, è il seguente: "tokens=2* delims= "
. Poiché lo spazio è un delimitatore, ignorerà tutti gli spazi iniziali.
Il tubo (|
) è sfuggito da una carota (^
), indicando al processore di comando di ignorarlo inizialmente.
Inoltre, preferisco usare FINDSTR
anziché FIND
perché (nei miei test) ho trovato che è il comando più veloce, che può fare la differenza se lo si utilizza frequentemente. FINDSTR /C:"Full Name"
potrebbe essere facilmente sostituito con FIND "Full Name"
se si preferisce.
win10 cmd esecuzione in un risultato .bat in: USERNAME "Nome completo" ') era inatteso in questo momento. –
non funziona se l'utente si trova su un dominio diverso da quello a cui sono attualmente connessi (ma ancora nella foresta AD w/trust), La richiesta verrà elaborata su un controller di dominio per il dominio XXX.XXX.XXX. Impossibile trovare il nome utente. Ulteriori informazioni sono disponibili digitando NET HELPMSG 2221. –
OP domanda per il comando "Dal prompt dei comandi". La mia risposta è formattata come tale. Tuttavia, dichiaro specificamente come formattare per lo script .bat se vuoi usarlo per quello. Si prega di consultare la "NOTA". – 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
Si noti che questo è formattato per script bat o cmd. Questo non funzionerà "Dal prompt dei comandi" come richiesto dall'OP sopra – Lectrode
'' 'for/f" usebackq tokens = 2, * delims = "% a in (' net user "% USERNAME%"/domain^| find/i " Nome completo "') imposta FULLNAME =% b''' /// Basta cambiare il doppio %% in% e funzionerà da CMD /// – kgimpel
- 1. mostra il nome del ramo GIT corrente nel prompt dei comandi di Windows
- 2. Ambiente pseudografico in Windows Prompt dei comandi
- 3. shell di prompt dei comandi di Windows per sqlite3
- 4. Installare un servizio di Windows utilizzando un prompt dei comandi di Windows?
- 5. Prompt dei comandi di Visual Studio rispetto a un normale prompt dei comandi?
- 6. Reputazione StackOverflow utilizzando il prompt dei comandi di Windows (cmd.exe)
- 7. Sendkeys dal prompt dei comandi
- 8. Ottieni l'output del prompt dei comandi su String in Java
- 9. Ottieni solo il nome di dominio da un URL?
- 10. Utilizzare ssh dal prompt dei comandi di Windows
- 11. Formato di codifica file tramite prompt dei comandi: Windows
- 12. Resize prompt dei comandi tramite i comandi
- 13. Come eseguire .sh sul prompt dei comandi di Windows?
- 14. Esecuzione di un file .jar in un prompt dei comandi, da doppio clic
- 15. Windows: come specificare il comando multiline al prompt dei comandi?
- 16. Compilando il codice C dal prompt dei comandi in Windows?
- 17. Come eseguire nodejs senza prompt dei comandi in windows?
- 18. uscita di albero in prompt dei comandi
- 19. Ottieni dominio corrente in ASMX
- 20. È possibile incorporare un prompt dei comandi in un'app Win32?
- 21. Esegui un comando nel prompt dei comandi usando excel VBA
- 22. utilizzando un altro database al prompt dei comandi redis
- 23. Il prompt dei comandi di Git Windows si blocca durante i comandi Git con (END)
- 24. Come posso eseguire comandi esterni dal prompt dei comandi gdb?
- 25. System.console() restituisce null da Eclipse, ma con prompt dei comandi
- 26. accesso git autenticato da ssh al prompt dei comandi di Windows?
- 27. apre la finestra del prompt dei comandi e modifica la directory di lavoro corrente
- 28. differenza tra prompt dei comandi e prompt anaconda
- 29. impostazioni Rimuovere proxy da finestre prompt dei comandi
- 30. Replica prompt dei comandi con file batch
Possiamo trovare il nome di dominio di un computer eseguendo il seguente commnad da linea di comando. systeminfo | findstr/B/C: "Dominio" Possiamo trovare il dominio dell'utente connesso utilizzando la variabile di ambiente 'Userdomain'. Il comando per questo è indicato di seguito. echo% userdomain% – Sathish
Grande! Funziona anche in PowerShell: ((utente net $ env: USERNAME/dominio | Select-String "Nome completo") -replace "Nome completo", ""). Trim() –
Ho dovuto eseguire il comando% command% con invertito virgole nella seconda riga per farlo funzionare: ('"% comando%"') – elady