Поиск по сайту:

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 получает сообщение.

Веселитесь, играя с сообщением!