Windows マシンからユーザーを自動的にログアウトするにはどうすればよいですか?

Windows マシンからユーザーを自動的にログアウトするにはどうすればよいですか?

特定のマルチユーザー マシンで作業が終わったら、ユーザーがログアウトするようにしたいと思います。現在、次のユーザーは「ユーザーを切り替えて」作業を続けますが、プログラムを開いた状態で同時に多くのユーザーがログオンしていると、リソースが消費されるようです。

ユーザーが 24 時間アクティブでなかった場合、自動的にマシンからログアウトさせることは可能ですか?


あるいは、現在のユーザー以外の全員を深夜にログアウトすることは可能ですか?

コンピュータは Windows ドメイン ネットワーク上にあります - ただし、自動ログアウトは 1 台のマシンに対してのみ機能するようにしたい (私はネットワーク管理者ではありません)

答え1

現在のユーザーを接続したまま切断されたユーザーをログアウトするには、次のスクリプト コードを「LogOffUsers.cmd」などの .cmd ファイルにコピーし、深夜にサービスとして実行します。

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

このスクリプトは、クエリコマンド「ディスク」というフレーズを検索して切断されたユーザーを見つけ、ログアウトします。

代わりにスクリプトをサービスとして継続的に実行し、一定時間切断または非アクティブだったユーザーをログアウトさせたい場合は、代わりに以下を使用します。

@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

このスクリプトは同じクエリ コマンドを使用しますが、結果の「IDLE TIME」部分もチェックし、アイドル時間が 32 (「GTR 32」) を超える場合はユーザーをログオフします。このフレーズが 2 回出現するのは、「IDLE TIME」トークンがわずかに異なる 2 つの位置に出現する可能性があるためです。次に、「choice」で始まる行は、先頭にループして操作を再度実行する前に 2 分間待機します。必要に応じて、「32」の値を増減できます。

見つかったここ

答え2

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))

上記はアイドル時間 (分) に対してのみ機能することに注意してください。切断されたセッションをログアウトする前にアイドル時間を数時間使用したい場合は、若干の修正を加える必要があります。

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

23 を変更して時間を調整すると、上記は 24 時間以上のアイドル時間で機能します。%%h 2012 は、%%d 値が分値ではなく時間値であることを保証します。

答え3

「ユーザーの切り替え」機能を無効にする方法を探します。これ役立つかもしれません。

関連情報