Active Directory: Отправить сообщения всем в данный момент вошедшим пользователям (msg.exe)
Ты помнишь команду net send? И ты помнишь о проблемах с безопасностью? На прошлой неделе я поиграл с msg.exe. Msg - это «новый» net send. Я пытался отправить сообщение всем пользователям и компьютерам в своем домене. Почему? Я хотел instruировать всех пользователей закрыть все открытые программы. И теперь я хочу сохранить и поделиться этими знаниями в форме этой записи в блоге.
Введение (msg.exe)
Msg отправляет сообщение пользователю. Этот пользователь должен быть авторизован в системе как пользователь домена (Профиль домена). Это означает, что следующее работает только в среде домена. Для сетевых техников: msg использует порт 445 (SMB/CIFS). Если вы отправляете сообщение пользователю, вам нужно указать имя компьютера и имя пользователя. Или вы можете попробовать отправить сообщение самому себе:
msg * "Hallo, this is a test!"
* означает, что сообщение отправляется всем зарегистрированным пользователям. Помните, что Windows является многопользовательской операционной системой. Не забывайте о других! 😉
Предварительные условия
Заголовок несколько вводит в заблуждение. Да, мы собираемся отправить сообщения всем пользователям, но на самом деле ко всем компьютерам. Предположим, все ваши клиентские компьютеры хранятся в конкретном организационном подразделении, называемом Рабочие станции. Вы хотите проинформировать всех пользователей, вошедших в систему на этих компьютерах. Я собираюсь использовать Invoke-Command. Убедитесь, что ваши клиентские компьютеры принимают удаленные команды PowerShell. Вы можете запустить Enable-PSRemoting на каждом из них. Или вы могли бы настроить WinRM, используя групповые политики:
Групповые политики: Включение WinRM для клиентских операционных систем Windows (Windows 10, Windows 8, Windows 7)
Резюме
- Все компьютеры должны находиться в одном домене
- WinRM должен быть включен на клиентских компьютерах с помощью команды Enable-PSRemoting или путем настройки через групповые политики, как описано в вышеуказанной ссылке. Обратите внимание, что в операционных системах Windows Server 2012/2016 WinRM включен по умолчанию, но не на клиентских системах Windows.
Отправка сообщений всем пользователям: PowerShell и Msg.exe в действии
Следующая однострочная команда получает все имена компьютеров из организационного подразделения Рабочие станции в домене active-directory.ru. После этого для каждого компьютера в организационном подразделении Рабочие станции выполняется команда msg. Сообщение отправляется всем пользователям, которые в настоящее время вошли в систему.
(Get-ADComputer -SearchBase "OU=Workstations,DC=active-directory,DC=com" -Filter *).Name | Foreach-Object {Invoke-Command -ComputerName $_ {msg * "Please close all open files. The Server will be shut down in 5 Minutes"}}
Клиент01 является членом рабочей группы OU. Клиент01 получает сообщение.
Веселитесь, играя с сообщением!


