Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Windows Server 2012/2012 R2 (http://forum.oszone.net/forumdisplay.php?f=117)
-   -   отправка сообщений пользователям AD (http://forum.oszone.net/showthread.php?t=320382)

Igor Potapov 02-11-2016 17:13 2684091

отправка сообщений пользователям AD
 
С помощью какого штатного средства можно отправить всем пользователям домена (или группе пользователей) сообщение и как? Все пользователи под управлением виндовс 7 и 10.

1) net send - только для виндовс ХР или менее
2) msg.exe - только для удалённого рабочего стола

подскажите, какой же вариант для AD?

WindowsNT 04-11-2016 09:55 2684564

Нет стандартного способа. Вот я писал такой скрипт:

$objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://OU=LV,OU=Computers,OU=Company,DC=domain,DC=local")
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain,"(objectCategory=computer)",@('name'))
$objSearcher.FindAll() | %{$_.properties.name} | %{cmd /c "msg console /server:$_ /time:300 Alarma! El ritmo fatal!"}

Но уткнулся в ряд проблем. Например, а у кого есть права посылать сообщение? А все ли консольные сессии доступны?
Ай, в итоге пришлось отказаться.

Iska 04-11-2016 09:58 2684566

WindowsNT, и что-нибудь придумали на замену?

WindowsNT 04-11-2016 16:49 2684660

Для получения статуса сессии console требовались права адм, это раз.
Второе - команда cmd отрабатывает минимум несколько секунд, для хотя бы 500 машин нужны десятки минут. Это проблема.

Отказались мы в итоге от идеи рассылать сообщения. Решили, что такая схема работает лучше:
Звонок руководителю > он звонит паре человек в своём отделе > люди перезваниваются в пределах отдела.

Iska 04-11-2016 17:56 2684679

Цитата:

Цитата WindowsNT
Второе - команда cmd отрабатывает минимум несколько секунд, для хотя бы 500 машин нужны десятки минут. Это проблема. »

Спасибо, ясно. Ваша идея с msg.exe мне нравится.

Цитата:

Цитата WindowsNT
Второе - команда cmd отрабатывает минимум несколько секунд, для хотя бы 500 машин нужны десятки минут. Это проблема. »

А не пробовали тупо использовать параллельные сессии, наподобие:
Код:

… $objSearcher.FindAll() | %{$_.properties.name} | %{Start-Process -FilePath "c:\Windows\System32\msg.exe" -ArgumentList "console /server:$_ /time:300 Alarma! El ritmo fatal!" -WindowStyle Hidden}
?! Что думаете?

Тут можно, конечно, и не все 500 зараз, а попробовать использовать -PassThru и очередь на какое-то определённое количество одновременных процессов, разумеется, с предварительной проверкой доступности хотя бы пингом, дабы msg.exe не топтался в бесполезных попытках достучаться до выключенной машины.


Цитата:

Цитата WindowsNT
Для получения статуса сессии console требовались права адм, это раз. »

Не могли бы Вы пояснить, в каком месте приведённого Вами кода это нужно? Или вообще не в том дело? Не соображу.

И, если ещё не устали от вопросов — пояснить более подробно по этим пунктам:
Цитата:

Цитата WindowsNT
Например, а у кого есть права посылать сообщение? А все ли консольные сессии доступны? »


WindowsNT 07-11-2016 12:14 2685382

Мы хотим послать сообщение командой msg не абы куда, а в консольную сессию. Для этого её нужно "увидеть" и опознать.
Для энумерации сессий (session enumeration) требуются права адм. на удалённой машине. Так это отрабатывало у меня. Это что касается прав.

Вот на этом я и остановился, так как выдавать такие права всем подряд не собирался.
Проверять параллельность запуска cmd при этом уже было неинтересно .)

По доступности консольных сессий так: не все сотрудники присутствуют у компьютера.
- кто-то залокал машину и ушёл, он сообщения не увидит. Кто-то не логонился вообще;
- кто-то проигнорирует очередное выскочившее окно или именно в этот момент нажмёт пробел - всё, окна нет;
- иногда сообщение почему-то не появляется впереди других окон, остаётся позади;
- в целом, сообщения (например, смс) от явного вызова (например, звонка) отличаются тем, что на них можно реагировать в отложенном режиме.

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


Время: 01:30.

Время: 01:30.
© OSzone.net 2001-