Saat menjalankan skrip baris perintah, apakah mungkin untuk mendapatkan nama pengguna saat ini?
windows
batch-file
Geo
sumber
sumber
Jawaban:
Anda dapat menggunakan variabel nama pengguna:
%USERNAME%
sumber
Nama pengguna:
Nama domain:
Anda bisa mendapatkan daftar variabel lingkungan lengkap dengan menjalankan perintah
set
dari prompt perintah.sumber
Cukup gunakan perintah ini di command prompt
sumber
whoami
, saya mengertidesktop-machine\bballdave025
. Ada dua bagian, dilihat melalui: 1)echo %USERNAME%
, hasilbballdave025
; 2)echo %USERDOMAIN%
, hasilnyaDESKTOP-MACHINE
. Saya kira orang bisa mengatakan 'username lengkap' tersedia melaluiecho %USERDOMAIN%\%USERNAME%
(hasil iniDESKTOP-MACHINE\bballdave025
,, cocok dengan yang dariwhoami
, mengabaikan kasus), atau bahkan melaluiecho %USERNAME%@%USERDOMAIN%
, hasilbballdave025@DESKTOP-MACHINE
. Itu semua tergantung pada apa yang pengguna (bagi kami, OP) butuhkan , yaitu jika bagian domain menjadi penting.Itu harus di
%USERNAME%
. Jelas ini dapat dengan mudah dipalsukan, jadi jangan mengandalkan itu untuk keamanan.Kiat bermanfaat: ketik
set
prompt perintah akan mencantumkan semua variabel lingkungan.sumber
%USERNAME%
adalah jawaban yang benar dalam batch dan lainnya di lingkungan Windows.Opsi lain adalah menggunakan
%USERPROFILE%
untuk mendapatkan jalur pengguna, sepertiC:\Users\username
.sumber
Jawabannya tergantung pada bahasa "command-line script" Anda.
Cmd
Di
cmd.exe
prompt perintah lama atau dalam skrip.bat
atau.cmd
, Anda dapat menggunakan yang berikut ini:%USERNAME%
- Hanya mendapatkan nama pengguna.%USERDOMAIN%
- Mendapat domain pengguna.PowerShell
Di prompt perintah PowerShell
.ps1
atau.psm1
skrip, Anda dapat menggunakan yang berikut ini:[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
- Memberi Anda nama pengguna yang sepenuhnya memenuhi syarat (mis. Domain \ Nama Pengguna). Ini juga merupakan metode yang paling aman karena tidak dapat ditimpa oleh pengguna seperti$Env
variabel lain di bawah ini.$Env:Username
- Hanya mendapatkan nama pengguna.$Env:UserDomain
- Mendapat domain pengguna.$Env:ComputerName
- Mendapat nama komputer.sumber
% USERNAME% akan memberi Anda nama pengguna dari proses yang sedang berjalan. Bergantung pada bagaimana Anda menjalankan file batch Anda, ini belum tentu sama dengan nama pengguna saat ini. Misalnya, Anda mungkin menjalankan file batch Anda melalui tugas yang dijadwalkan, dari layanan, dll.
Berikut adalah cara yang lebih pasti untuk mendapatkan nama pengguna dari pengguna yang saat ini masuk dengan menggoreskan nama pengguna yang memulai tugas explorer.exe:
sumber
Saya menggunakan metode ini dalam menulis file batch untuk pengujian.
Karena Anda harus memasukkan kata sandi dalam teks biasa jika otentikasi diperlukan, saya hanya akan menggunakannya dalam lingkungan yang sepenuhnya pribadi di mana pengguna lain tidak dapat melihatnya atau jika pengguna yang melihat kata sandi tidak akan menanggung konsekuensi.
Semoga ini bisa membantu seseorang.
sumber
Itu selalu mengganggu saya bagaimana Windows tidak memiliki beberapa utilitas scripting kecil yang lebih berguna dari Unix, seperti who / whoami , sed dan AWK . Bagaimanapun, jika Anda menginginkan sesuatu yang sangat mudah, dapatkan Visual Studio Express dan kompilasi yang berikut:
Dan cukup gunakan itu dalam file batch Anda.
sumber
net config Workstation | find "User name"
whoami
tersedia mulai dengan Windows Vista.Dalam kebanyakan kasus, variabel% USERNAME% akan menjadi apa yang Anda inginkan.
Namun, jika Anda menjalankan shell cmd yang ditinggikan, maka% USERNAME% akan melaporkan nama administrator alih-alih nama pengguna Anda sendiri. Jika Anda ingin mengetahui yang terakhir, jalankan:
sumber
Ini adalah perbedaan utama antara variabel nama pengguna dan perintah whoami:
sumber
Dalam konteks standar, setiap pengguna yang terhubung memegang proses explorer.exe: Perintah [tasklist / V | find "explorer"] mengembalikan baris yang berisi pemilik proses explorer.exe, dengan regex yang diadaptasi dimungkinkan untuk mendapatkan yang diperlukan nilai. Ini juga berjalan dengan sempurna di bawah Windows 7.
Dalam kasus yang jarang terjadi explorer.exe digantikan oleh program lain, filter find dapat disesuaikan untuk mencocokkan kasus ini. Jika perintah mengembalikan baris kosong maka kemungkinan tidak ada pengguna yang masuk. Dengan Windows 7, Anda juga dapat menjalankan [sesi kueri | temukan ">"].
sumber
Sejauh menemukan respon BlueBearr yang terbaik (sementara saya, saya menjalankan skrip batch saya dengan misalnya. SISTEM hak) saya harus menambahkan sesuatu untuk itu. Karena di baris versi bahasa Windows (Polandia) saya yang akan ditangkap oleh "%% a %% b" == "Nama Pengguna:" benar-benar KOMPLIKASI (berisi beberapa karakter diakritik dalam bahasa saya), saya lewati 7 baris pertama dan beroperasi pada tanggal 8.
sumber