Bagaimana saya bisa secara otomatis mengeluarkan pengguna dari mesin Windows?

9

Saya ingin memastikan bahwa orang-orang keluar setelah mereka selesai bekerja pada satu mesin, multi-user spesifik. Saat ini, pengguna berikutnya hanya akan "beralih pengguna" dan terus bekerja, tetapi memiliki banyak pengguna yang masuk pada saat yang sama dengan program terbuka tampaknya menggunakan sumber daya.

Apakah mungkin untuk secara otomatis mengeluarkan pengguna dari mesin jika mereka tidak aktif selama 24 jam?


Atau, apakah mungkin untuk keluar semua orang kecuali pengguna saat ini di tengah malam?

Komputer ada di jaringan domain Windows - walaupun saya hanya ingin logout otomatis berfungsi untuk satu mesin (dan saya bukan admin jaringan)

.

Jonas
sumber
1
Apakah ini jaringan domain Windows?
Moab
@ Moab: Komputer ada di jaringan domain Windows - walaupun saya hanya ingin logout otomatis berfungsi untuk mesin tunggal (dan saya bukan admin jaringan).
Jonas
@ Jonas, Pilihan kata-kata Anda membuatnya terdengar seperti lebih dari satu PC, Anda dapat mengedit posting asli Anda untuk memasukkan informasi baru ini.
Moab
@ Moab: Saya sudah mencoba mengklarifikasi pertanyaan. Apakah itu lebih baik?
Jonas
Sekarang, lihatlah.
Moab

Jawaban:

6

Untuk keluar dari pengguna yang terputus sambil membiarkan pengguna saat ini terhubung, salin kode skrip berikut ke file .cmd seperti "LogOffUsers.cmd" dan kemudian jalankan sebagai layanan di tengah malam:

@echo off
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do logoff %%b

Skrip berfungsi dengan menggunakan perintah kueri untuk menemukan pengguna yang terputus dengan mencari frasa "disc", lalu keluar.

Jika Anda ingin agar skrip dijalankan terus menerus sebagai layanan, keluar pengguna ketika mereka telah terputus / tidak aktif selama jangka waktu tertentu, Anda akan menggunakan:

@echo off
:Top
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else %%e GTR 32 (logoff %%b)
choice /T 120 /C 1 /D 1 /N
goto top

Skrip ini menggunakan perintah kueri yang sama, tetapi tambahan memeriksa bagian "IDLE TIME" dari hasil, mencatat pengguna jika waktu idle lebih besar dari 32 ("GTR 32"). Ungkapan itu muncul dua kali karena token "IDLE TIME" dapat terjadi dua posisi yang sedikit berbeda. Kemudian garis yang dimulai dengan "pilihan" menunggu 2 menit sebelum melakukan operasi lagi dengan mengulang ke awal. Anda dapat menambah atau mengurangi nilai "32" sesuai dengan kebutuhan Anda.

Ditemukan di sini .

eMansipater
sumber
@ eMansipater: Bisakah Anda menjelaskan apa fungsinya, dan di mana saya dapat mengatur 24 jam?
Jonas
1
Solusi terbaik adalah dengan menonaktifkan perpindahan pengguna yang cepat, ini akan memaksa keluar sebelum pengguna baru dapat masuk ke akun mereka.
Moab
1
@ Moab menonaktifkan perpindahan pengguna yang cepat berarti non-admin tidak dapat login jika pengguna sebelumnya telah mengunci layar. @Jonas Pertanyaan bijak - bit dalam tanda kurung menggunakan perintah kueri dari support.microsoft.com/kb/186592 untuk menemukan pengguna yang terputus dengan mencari frasa "disc", lalu logout. Perintah pilihan menunggu untuk hanya melakukan operasi setiap 2 menit. Tidak perlu untuk opsi 24 jam karena skrip ini hanya akan mengeluarkan pengguna jika pengguna lain sudah masuk.
eMansipater
1
@ Jonas file batch menggunakan "%% a", tetapi untuk melakukan hal yang sama pada baris perintah Anda mengetik "% a" sebagai gantinya - yang seharusnya membantu dengan debugging. Saya tidak memiliki mesin Windows yang berguna untuk mencoba skrip aktif, jadi mungkin ada sesuatu yang salah dengan itu. Anda dapat mencoba mengubah perintah "GTR 32 (logoff %% b)" menjadi "echo logoff %% b" tanpa tanda kutip, atau "echo logoff% b" tanpa tanda kutip jika mengetiknya. Dengan cara itu akan mencetak pengguna itu sedang mencoba untuk log off. Jika mencetak sampah atau tidak ada, itu akan menunjukkan skrip rusak. Saya khawatir saya tidak tahu "query" format output dengan hati untuk memeriksanya.
eMansipater
1
@Jonas Saya memiliki kesempatan untuk menggandakan cek output dari perintah query dan bagian-bagian dari skrip tersebut sehingga logout hanya akan terjadi jika pengguna telah menganggur selama periode waktu tertentu. 'if %% d GTR 32' berarti menjalankan perintah logoff jika token %% d lebih besar dari 32. Bergantung pada penggunaan remote desktop, dll. token "idle" dapat muncul di dua tempat, itulah sebabnya skrip memeriksa kedua skenario. Versi modifikasi hanya log out setiap pengguna menganggur tidak peduli berapa lama sudah. Jika saya bisa mendapatkan ke mesin windows saya dapat memverifikasi sintaks.
eMansipater
1
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else (if %%e GTR 35 (logoff %%b))

Perhatikan bahwa hal di atas hanya akan bekerja selama beberapa menit, Anda perlu sedikit mengubahnya jika Anda ingin menggunakan jam waktu idle sebelum keluar dari sesi yang terputus.

for /f "tokens=1-8 delims=,:/ " %%a in ('query user ^| find /i "disc"') do if %%d GTR 23 (if %%h GTR 2012 (logoff %%b))

Mengubah 23 untuk menyesuaikan jam, hal di atas akan bekerja pada 24 jam atau lebih waktu idle. %% h 2012 memastikan nilai %% d adalah satu jam dan bukan nilai satu menit.

MASSA
sumber
0

Saya akan mencari cara untuk menonaktifkan fitur "Switch User". Ini mungkin bisa membantu.

Wisaya Prang
sumber
Saya sebenarnya suka fitur "pengguna beralih": dengan cara ini, seseorang yang menjalankan perhitungan panjang tidak menghalangi pengguna lain untuk menggunakan komputer juga.
Jonas