Bagaimana saya bisa mengambil ID sesi pengguna saat ini melalui baris perintah windows?
Di daftar tugas di bawah tab pengguna, setiap pengguna dikaitkan dengan ID sesi. Saya ingin mengambil ini melalui baris perintah sehingga saya dapat menggunakannya untuk aplikasi jarak jauh.
windows
command-line
Negatif
sumber
sumber
Jawaban:
Ini tentu bukan cara yang paling efisien, tetapi Anda dapat melihat hasilnya
tasklist
. Ini akan menampilkan nama dan sesi # dari setiap proses yang berjalan. Jika Anda masuk secara lokal maka lihat ID untuk sesi yang bernama "konsol".Edit :
Query Session
akan mengambil id sesi:sumber
tasklist
bagus karena tidak memerlukan versi Pro / Ent OS. Anda juga dapat mendaftar hanya sesi interaktif dengan memfilter untuk explorer.exe -tasklist /fi "imagename eq explorer.exe"
sumber
tasklist
pada waktu yang bersamaan.Ini menggabungkan aspek jawaban Gary dan jawaban Oscar . Seperti dicatat oleh Gary, output dari
query session
terlihat sepertiatau, dalam kasus saya (menggunakan "Ganti pengguna")
(Saya tidak memiliki RDP yang diatur, jadi saya tidak dapat mengujinya.) Mungkin maksud dari pertanyaan ini adalah untuk menentukan ID dari sesi yang sedang aktif. Saya sarankan mencari output
query session
untuk apa yang tampak seperti sesi saat ini:yang menugaskan 2, 3, dan kata-4 (yang kami berharap untuk menjadi USERNAME itu, [SESI] ID, dan NEGARA) dari setiap baris dari output
query session
untuk%a
,%b
dan%c
, masing-masing, dan kemudian melaporkan SESI ID dari garis mana USERNAME adalah saya dan STATE adalahActive
.Ternyata yang
query session
mengambilusername
parameter, sehingga di atas dapat disederhanakanatau
Untuk menggunakan ini dalam skrip (file batch), Anda mungkin ingin mengatakannya
menggunakan
%%a
dan%%b
(bukan%a
dan%b
) karena itu dalam skrip. Anda mungkin dapat mengabaikan@
jika seluruh file batch berada di bawah@echo off
. Inisialisasi untukunknown
memungkinkan Anda melakukan penanganan kesalahan (mendeteksi jika tidak ada garis dalam outputquery session
yang cocok). Memperluas penanganan kesalahan untuk mengenali dan bereaksi jika ada beberapa garis yang cocok dalam outputquery session
dibiarkan sebagai latihan.sumber
Berbeda dengan Nama Sesi, ID Sesi tidak disimpan dalam variabel dan tidak mudah untuk dicapai. Saya yakin ada satu, tapi saya tidak bisa memikirkan alat baris perintah bawaan yang melakukan ini.
Namun, saya telah menulis file .exe kecil (C #, .Net 4) yang melakukan ini.
Keduanya akan menampilkan id sesi, dan juga memilikinya sebagai kode pengembalian sehingga Anda dapat menggunakannya dalam berbagai skrip / teknik.
Tautan ke file di MediaFire
sumber
Ini berdasarkan kode dari Oscar Beh.
tasklist
akan menampilkan laporan ID sesi (dan informasi lainnya) untuk semua instance dari executable yang diberikan, termasuk dirinya sendiri. Saat Anda menjalankan perintah, itu akan menampilkan id sesi Anda. Satu-satunya cacat potensial dalam kodenya adalah bahwa itu tidak memberi tahu Anda jika ada beberapa contoh program, yang dapat menyebabkan skrip mengembalikan hasil yang salah.Di sini kami melaporkan semua contoh
tasklist
untuk memastikan bahwa tidak ada sesi lain yang menjalankan perintah itu:Jika Anda melihat dua ID Sesi dilaporkan, jalankan kembali skrip.
sumber