it-swarm-id.com

Dapatkan nama tampilan pengguna domain Windows saat ini dari prompt perintah

Dari perintah Prompt, bagaimana saya bisa mendapatkan nama tampilan yang ramah (yaitu, "John Doe" bukannya "john.doe") dari pengguna domain yang saat ini masuk?

9
skeletank

Berikut ini adalah cara rumit yang saya lakukan dengan menggunakan perintah net dan perintah find dalam 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

Baris pertama menyimpan perintah yang ingin kita jalankan dalam sebuah variabel. Ini menarik nama pengguna dari variabel lingkungan dan meneruskannya ke perintah Net User serta parameter /domain untuk memerintahkannya untuk menarik dari domain saat ini. Kemudian mem-pipe hasil dari itu, yang merupakan kumpulan data pada pengguna saat ini, ke metode find yang hanya akan menarik properti yang kita inginkan. Hasil dari penemuan ini adalah dalam format "Nama Lengkap John Doe". Baris kedua akan menjalankan perintah dan memasukkan hasilnya ke dalam variabel fullNameText. Baris ketiga akan menghapus bagian "Nama Lengkap" dari hasil dan berakhir dengan "John Doe". Baris keempat dengan for loop akan menghapus semua spasi utama dari hasil dan Anda berakhir dengan "John Doe" dalam variabel fullName.

10
skeletank

Inilah turunan dari skeletank's response yang sedikit lebih bersih yang bekerja untuk saya ... (Saya mencoba skeletank's response dan itu tidak berfungsi untuk saya seperti yang ditulis, jadi jawaban saya di bawah ini.)

SET TNAME="Net User %USERNAME% /domain| FIND /I "Full Name""
FOR /F "tokens=3,4 delims=, " %%A IN ('%TNAME%') DO SET DNAME=%%B %%A

Kemudian Anda dapat menggunakan 'DNAME' di mana saja yang Anda ingin ouput dengan gema atau memvalidasi dengan pernyataan 'IF'. Anda dapat membalik token '%% B' dan '%% A' untuk kembali ke tata letak nama belakang nama belakang. Ini menghemat upaya tambahan yang digunakan dalam skeletank's respons asli. 

Variabel:
-TNAME= Nama Sementara
-NAMA SAMARAN= Nama Tampilan

-Terima kasih skeletank .

4
enigmafyv

for /f "usebackq tokens=2,* delims= " %%a in (`Net User "%USERNAME%" /domain ^| find /i "Full Name"`) do set FULLNAME=%%b

3
kgimpel

Ini harus menjadi cara yang bersih menggunakan dsquery dan dsget tanpa mengandalkan output dari "Nama Lengkap", yang tergantung pada bahasa, sedangkan "fn" tampaknya bekerja dengan versi bahasa yang berbeda dari windows.

for /F "tokens=2" %i in ('dsquery user -samid %username% ^| dsget user -L -fn ^| find "fn:"') DO @echo %i

Saklar dsget -L memberikan output terdaftar "fn: USER" sehingga satu-satunya yang tersisa adalah ambil kolom kedua di output. Find "fn:" digunakan untuk menyingkirkan "dsget berhasil" keluaran.

2
done

Jawaban yang diterima (pada saat posting) memiliki 4 baris kode, ketika Anda hanya perlu satu untuk melakukan hal yang sama:

for /f "tokens=2*" %n in ('Net User "%USERNAME%" /domain^|FINDSTR /C:"Full Name"') do echo "%o"

Ini akan berfungsi bahkan jika Nama Lengkap memiliki lebih dari 2 bagian. Bekerja pada workstation Windows "out of the box" dan tidak memerlukan hak admin.

CATATAN: Ingatlah untuk mengubah %n dan %o menjadi %%n dan %%o secara berurutan, masing-masing, saat menggunakan dalam file batch.

Penjelasan perintah:

"tokens=2* menetapkan bahwa satu-satunya token yang akan diperhatikan adalah token ke-2 (ditugaskan ke %n), dan semuanya setelahnya (ditugaskan ke huruf berikutnya: %o)

Default delims adalah spasi sehingga kita tidak perlu mendefinisikannya, tetapi jika kita perlu mendefinisikannya secara manual, itu adalah sebagai berikut: "tokens=2* delims= ". Karena ruang adalah pembatas, ia akan mengabaikan semua ruang utama.

Pipa (|) lolos oleh wortel (^), memberi tahu pemroses perintah untuk mengabaikannya terlebih dahulu.

Saya juga lebih suka menggunakan FINDSTR daripada FIND karena (dalam pengujian saya) saya menemukan ini sebagai perintah yang lebih cepat, yang dapat membuat perbedaan jika Anda sering menggunakannya. FINDSTR /C:"Full Name" dapat dengan mudah diganti dengan FIND "Full Name" jika Anda inginkan.

2
Lectrode

Jika Anda menginginkannya untuk digunakan manusia - artinya Anda tidak perlu menguraikannya secara otomatis sehingga Anda mendapatkan hanya nama lengkap - Anda cukup mengetik Net User <username> /domain pada perintah Prompt, dan baca bidang "Nama Lengkap" .

Referensi: Mendapatkan info pengguna domain terperinci dari baris perintah .

0
cp.engr

Saya membuat file batch untuk melakukan beberapa hal dengan cepat dengan memilih tindakan menggunakan set p dan goto. Saya meninggalkan bagian yang tidak perlu. 

@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

Saya harap ini membantu.

0
Errant

Dari Prompt perintah jarak jauh (saya biasanya membuat ini dengan menggunakan PSexec.exe), kemudian cukup ketik "permintaan pengguna" 

enter image description here

0
Tony D.