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


9

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

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


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

コンピューターはWindowsドメインネットワーク上にありますが、1台のマシンで自動ログアウトを機能させたいだけです(ネットワーク管理者ではありません)。


1
これはWindowsドメインネットワークですか?
モアブ

@Moab:コンピューターはWindowsドメインネットワーク上にあります。ただし、自動ログアウトを単一のマシンでのみ機能させたいのですが(ネットワーク管理者ではありません)。
ジョナス

@ジョナス、あなたの言葉の選択はそれが複数のPCのように聞こえるようにします、あなたはこの新しい情報を含めるために元の投稿を編集するかもしれません。
モアブ

@モアブ:私は質問を明確にしようとしました。それは良いですか?
ジョナス

さあ、ご覧ください。
モアブ

回答:


6

現在のユーザーを接続したまま、切断されたユーザーをログアウトするには、次のスクリプトコードを "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

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

ここで見つかりまし


@eMansipater:これが何をするのか、24時間をどこに設定できるのか説明していただけませんか?
ジョナス

1
最善の解決策は、ユーザーの簡易切り替えを無効にすることです。これにより、新しいユーザーがアカウントにログインする前に強制的にログオフされます。
モアブ

1
@Moabでユーザーの簡易切り替えを無効にすると、前のユーザーが画面をロックした場合、管理者以外はログインできなくなります。@Jonas賢い質問-かっこ内のビットは、support.microsoft.com / kb / 186592のクエリコマンドを使用して、 "disc"という語句を検索し、ログアウトして切断されているユーザーを見つけます。選択コマンドは、2分ごとの操作の実行のみを待機しています。別のユーザーがすでにログインしている場合にのみ、ユーザーをログアウトする必要があり、このスクリプト以来、24時間営業のオプションは必要ありません。
eMansipater

1
@Jonasバッチファイルは "%% a"を使用しますが、コマンドラインで同じことを行うには、代わりに "%a"と入力します。これはデバッグに役立ちます。スクリプトを試すのに便利なWindowsマシンを持っていないので、微妙な問題があるかもしれません。「GTR 32(logoff %% b)」コマンドを引用符なしの「echo logoff %% b」に、または入力すると引用符なしの「echo logoff%b」に変更してみることができます。これにより、ログオフしようとしているユーザー。ガベージを印刷するか、何も印刷しない場合、スクリプトの形式が正しくないことが示されます。「クエリ」の出力形式を確認することは、私にはよくわかりません。
eMansipater

1
@Jonas クエリコマンドの出力を再確認する機会がありました。スクリプトのこれらの部分は、ユーザーが一定時間アイドル状態であった場合にのみログアウトが発生するようにするためのものでした。'if %% d GTR 32'は、トークン%% dが32より大きい場合にログオフコマンドを実行することを意味します。リモートデスクトップの使用などに応じて、「アイドル」トークンが2か所に表示されることがあります。両方のシナリオをチェックします。変更されたバージョンではアイドル状態になっているユーザーがログアウトされているだけです。Windowsマシンにアクセスできれば、構文を確認できます。
eMansipater 2011

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

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

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の値が分ではなく時間であることを確認しています。


0

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


私は実際には「ユーザー切り替え」機能が好きです。このようにして、長い計算を実行する誰かが他のユーザーがコンピューターを使用するのを妨げることはありません。
Jonas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.