認証されたユーザーの即時ログオフを強制(緊急の場合)


24

Active Directoryでは、ユーザーがログインできないようにする場合、アカウントを無効にするか、単にパスワードをリセットできます。ただし、既にワークステーションにログインしているユーザーがいて、できるだけ早くリソースにアクセスできないようにする必要がある場合は、どうすればよいですか?私は、労働者が即座に解雇され、彼らがすぐにネットワークから締め出されない場合、彼らが大混乱を引き起こす危険がある緊急事態について話します。

数日前、私は同様のケースに直面しました。最初はどのように行動すればよいかわかりませんでした。ネットワーク共有へのユーザーアクセスを防止するのは簡単ですが、これだけでは十分ではありません。最終的に、Stop-Computer -ComputerName <name> -ForcePowerShellコマンドレットでターゲットコンピューターの電源をオフにし、私の場合、これで問題が解決しました。ただし、場合によっては、これは最善の選択ではないかもしれません。たとえば、切断する必要があるユーザーが複数のワークステーションまたは重要なサービスを提供するコンピューターにログインしていて、スイッチをオフにできない場合などです。

すべてのワークステーションからユーザーを即座に強制的にログオフさせるための最良の解決策は何ですか?これはActive Directoryでも可能ですか?


5
良い質問です。答えを見ることに興味があります。ただし、このような状況では、解雇された従業員は、解雇のニュースを受け取ってから建物からエスコートされるまで、人事のエスコートを100%受けていませんか?
EEAA

ええ、彼らはそうあるべきです。ただし、この問題をActive Directoryごとに解決することに興味があります:)
エラティエル

警備員に電話して、彼らをその人の場所に物理的に移動させて、それらを削除させますか?ネットワーク外にある場合、ファイアウォールでブロックしますか?powershellスクリプトを使用して、そのユーザーアカウントで実行されているすべてのコンピューター上のプロセスを強制終了します。
ゾレダチェ

回答:


20

最善の解決策:警備員が人をエスコートします...

次善の解決策:

  1. まず、qwinstaでセッション番号を確認します:QWINSTA / server:computername
  2. セッションIDを書き留めます。
  3. 次に、ログオフコマンドLOGOFF sessionID / server:computernameを使用します。
C:\>qwinsta /?
Display information about Remote Desktop Sessions.

QUERY SESSION [sessionname | username | sessionid]
              [/SERVER:servername] [/MODE] [/FLOW] [/CONNECT] [/COUNTER] [/VM]

  sessionname         Identifies the session named sessionname.
  username            Identifies the session with user username.
  sessionid           Identifies the session with ID sessionid.
  /SERVER:servername  The server to be queried (default is current).
  /MODE               Display current line settings.
  /FLOW               Display current flow control settings.
  /CONNECT            Display current connect settings.
  /COUNTER            Display current Remote Desktop Services counters information.
  /VM                 Display information about sessions within virtual machines.


C:\>logoff /?
Terminates a session.

LOGOFF [sessionname | sessionid] [/SERVER:servername] [/V] [/VM]

  sessionname         The name of the session.
  sessionid           The ID of the session.
  /SERVER:servername  Specifies the Remote Desktop server containing the user
                      session to log off (default is current).
  /V                  Displays information about the actions performed.
  /VM                 Logs off a session on server or within virtual machine. The unique ID of the session needs to be specified.

そのための初歩的なバッチスクリプトを作成しました。unixtoolsだけでなく、パスにいくつかが必要psexecです。

@ECHO OFF
:: Script to log a user off a remote machine
::
:: Param 1: The machine
:: Param 2: The username

psexec \\%1 qwinsta | grep %2 | sed 's/console//' | awk '{print $2}' > %tmp%\sessionid.txt
set /p sessionid=< %tmp%\sessionid.txt
del /q %tmp%\sessionid.txt
psexec \\%1 logoff %sessionid% /v

2
これらの2つのコマンドを自動バッチ/ PowerShellファイルに結合することは可能ですか?簡単なスクリプトを実行してすべてのセッションをログアウトすることは非常に便利です。
EtherDragon

1
ユーザーが接続しているすべてのコンピューターのリストを取得することは可能ですか?
何も不可能14

@NothingsImpo
ETL 14

私が使用していることを達成する傾向がある@NothingsImpossible psloggedon
BE77Y

5

完全にADベースではありませんが、必要なことを行う必要があります。

アカウントを無効化または期限切れにする

import-module activedirectory
set-aduser -identity "username" -accountexperationdate "12:09 pm"

または

set-aduser -identity "username" -enabled $false

次に、マシンからユーザーをログオフします

shutdown -m "\\computername" -l

ユーザーをログオフする別の方法は、管理コマンドプロンプトから組み込みのWindowsユーティリティを使用することです。

logoff 1 /SEVER:computername

これにより、リモートコンピューターからセッションID 1がログオフされます。セッションIDがわからない場合(1がデフォルト)、リモートマシンに対してquserを使用して見つけることができます。


1
それはユーザーをログアウトさせるのではなく、マシンをシャットダウンするだろうと考えました。それが問題でした。
slybloty

2
誤解しないでくださいが、あなたの答えは私が望んでいないものであり、質問にすべてを含めました:アカウントの無効化/期限切れまたはパスワードの変更はユーザーのログオフを強制せず、単にログインを防止しますOPで説明されている場合には役に立ちません。
エラティエル

3
このshutdownコマンドはデフォルトでは実際にはシャットダウンしませんが、ユーザーをログオフします
マイケルハンプトン

ユーザーをログオフする別の方法を追加しました。これが探しているものに似ているかどうかを教えてください。編集:ETLの答えが見えなかったので、パンチに打ち勝ったために彼に+1を与えました。
デビッドV

3
私の仕事のポリシーは通常、次のようになります。会議中にアカウントは無効になり、セッションはリモートでログアウトされます(デスクトップにはすべてセキュリティで保護されたVNCサーバーがインストールされます)。
エイブリーペイン

4

wmicを使用して、ユーザーのセッションをリモートでロックできます。

1-最初に、ユーザーパスワードを変更します。

C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
  create "net user [user] [NewPassword]"

2-次に、アカウントを無効にします。

C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
  create "net user [user] /active:no"

3-次に、ユーザーセッションを切断します。

C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
  create "tsdiscon"

これには付加価値があります。現在のユーザーセッションを失うことはないため、ワークステーションのロックを解除すると、ドアに案内される前に彼が何か厄介なことをしようとしているかどうかを確認できます。

コマンドラインカンフーブログへのすべてのクレジット。セキュリティ/フォレンジック関連のクレイジーなものがたくさんあります!

更新:最初の2つの手順はローカルユーザーを対象としています。ActiveDirectory環境では実際に簡単で、ADでアカウントを無効にしてパスワードを変更し、悪意のあるユーザーのIPアドレスに対して3番目のコマンドを実行します。


残念ながら、このコマンドwmic..."tsdiscon" はXPでのみ機能します。Vista +では、このコマンドはコンソールセッションを切断できません。
私は

0

ユーザープロパティで、ログオン時間をすべての時間でログオン拒否に変更するだけです。これにより、ログインした場所からすぐにログアウトされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.