强制authentication用户立即注销(紧急情况)

在Active Directory中,如果您想阻止用户login,您可以禁用他们的帐户,或者简单地重置他们的密码。 但是,如果您有一个已经login到工作站的用户,并且需要尽可能快地阻止他们访问任何资源,那么您怎么做? 我提到一个紧急情况,一名工作人员立即被解雇,如果他们没有立即被关在networking外面,就有可能造成严重破坏。

前几天我也遇到过类似的情况。 起初我不确定如何行事。 防止用户访问networking共享很容易,但这还不够。 最终,我使用Stop-Computer -ComputerName <name> -Force PowerShell cmdlet将目标计算机closures,在我的情况下,这解决了问题。 但是,在某些情况下,这可能不是最好的select,例如,如果您需要中断的用户在多个工作站或提供重要服务的计算机上login,而您无法将其closures。

远程强制所有工作站立即注销用户的最佳解决scheme是什么? 这甚至可以在Active Directory中吗?

最好的解决scheme:一名保安护送出去的人…

次优解决scheme:

  1. 首先,用qwinsta检查会话号码:QWINSTA / server:computername
  2. 记下会话ID。
  3. 然后使用logoff命令: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 

不完全是基于AD的,但应该做你想做的。

禁用或过期帐户

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

要么

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

然后将用户从他们的机器上注销

 shutdown -m "\\computername" -l 

另一种注销用户的方法是从pipe理命令提示符使用内置的Windows实用程序

 logoff 1 /SEVER:computername 

这将从远程计算机注销会话ID 1。 如果您不知道会话标识(默认为1),则可以使用quser对远程计算机进行查找。

您可以用wmic远程locking用户的会话:

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" 

这有一个附加价值,因为你不会松动当前的用户会话,因此当你解锁工作站时,你将能够看到他是否正在试图做一些讨厌的事情之前被押解到门外。

所有学分命令行功夫博客 。 那里有一堆疯狂的安全/取证相关的东西!

更新:前两个步骤是针对本地用户的,在一个活动目录环境下实际上比较简单,在AD中禁用帐号并更改密码,然后针对恶意用户IP地址运行第三个命令。