Назад | Перейти на главную страницу

Принудительный немедленный выход из системы аутентифицированного пользователя (в экстренных случаях)

В Active Directory, если вы хотите запретить пользователю вход в систему, вы можете отключить его учетную запись или просто сбросить пароль. Однако, если у вас есть пользователь, который уже вошел в систему на рабочей станции, и вам нужно как можно быстрее запретить ему доступ к каким-либо ресурсам - как вы это делаете? Я говорю о чрезвычайной ситуации, в которой работник немедленно увольняется, и существует риск того, что он нанесет ущерб, если его немедленно не заблокируют в сети.

Несколько дней назад я столкнулся с подобным случаем. Сначала я не знал, как действовать. Предотвратить доступ пользователей к общим сетевым ресурсам легко, но этого недостаточно. В конце концов я выключил целевой компьютер с помощью Stop-Computer -ComputerName <name> -Force Командлет PowerShell, и в моем случае это решило проблему. Однако в некоторых случаях это может быть не лучший выбор, например, если пользователь, которого вам нужно отключить, вошел в систему на нескольких рабочих станциях или на компьютере, который предоставляет важную услугу, и вы просто не можете его отключить.

Какое наилучшее решение для удаленного принудительного немедленного выхода пользователя из системы со всех рабочих станций? Возможно ли это вообще в Active Directory?

Лучшее решение: охранник проводит человека ...

Второе лучшее решение:

  1. Сначала проверьте номер сеанса с помощью qwinsta: QWINSTA / server: computername
  2. Запишите идентификатор сеанса.
  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

Не полностью основан на 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

Это завершает сеанс с идентификатором 1 на удаленном компьютере. Если вы не знаете идентификатор сеанса (по умолчанию - 1), вы можете использовать quser на удаленной машине, чтобы найти его.

Вы можете заблокировать сеанс пользователя удаленно с помощью 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"

Это имеет дополнительную ценность, поскольку вы не потеряете текущий сеанс пользователя и, следовательно, когда вы разблокируете рабочие станции, вы сможете увидеть, пытался ли он сделать что-то неприятное, прежде чем его сопроводят к двери.

Все кредиты Блог о кунг-фу из командной строки. Там есть куча сумасшедших вещей, связанных с безопасностью / криминалистикой!

ОБНОВЛЕНИЕ: первые два шага предназначены для локальных пользователей, в среде активного каталога на самом деле проще, отключить учетную запись и изменить пароль в AD, а затем запустить третью команду против IP-адреса злонамеренного пользователя.

Просто измените часы входа на все часы в свойствах пользователя. Это немедленно выведет их из системы, где бы они ни находились.