Active-Directory

強制認證使用者立即註銷(緊急情況)

  • May 25, 2018

在 Active Directory 中,如果您想阻止使用者登錄,您可以禁用他們的帳戶或簡單地重置他們的密碼。但是,如果您有一個已經登錄到工作站的使用者,並且您需要阻止他們盡快訪問任何資源 - 您該怎麼做?我說的是一種緊急情況,其中一名工人立即被解僱,如果他們沒有立即被鎖定在網路之外,他們就有可能造成嚴重破壞。

幾天前,我遇到了類似的情況。一開始我不知道該怎麼做。阻止使用者訪問網路共享很容易,但這還不夠。Stop-Computer -ComputerName <name> -Force最終,我使用PowerShell cmdlet關閉了目標電腦,就我而言,這解決了問題。但是,在某些情況下,這可能不是最佳選擇,例如,如果您需要切斷的使用者在多個工作站或提供重要服務的電腦上登錄,而您無法將其關閉。

從所有工作站遠端強制使用者立即註銷的最佳解決方案是什麼?這在 Active Directory 中是否可行?

最佳解決方案:一名保安護送該人離開……

第二個最佳解決方案:

  1. 首先,使用 qwinsta 檢查會話號:QWINSTA /server:computername
  2. 記下會話 ID。
  3. 然後使用註銷命令:LOGOOFF 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

引用自:https://serverfault.com/questions/575667