Форум программистов, компьютерный форум, киберфорум
Windows Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 580

MessageBOX для списка компьютеров

16.12.2025, 10:19. Показов 650. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача рассылки для компов домена. Все права на компы есть.
Пробовал варианты:
SendMessageBoxComp.cmd
Windows Batch file
1
2
3
Setlocal EnableDelayedExpansion
SET "file=ComputersMsgBox.txt"
FOR /F %%x IN ('findstr /B /V /C:# %file%') DO (msg * /Server:%file% /V "Здравствуйте.Завтра вам потребуется сменить пароль, которым пользовались 90 дней. Выполняя Приказ №.... - максимальный срок действия пароля - 90 дней Напоминаю, пароль требуется ENGL-символы с содержанием заглавных и строчных букв, цифры, специальные символы с диакритическими знаками ( !@...?/) не менее восьми символов.Нельзя включать в пароль свои символы логина.")
Ответ:
MSG {username | sessionname | sessionid | @filename | *}
[/SERVER:servername] [/TIME:seconds] [/V] [/W] [message]

username Identifies the specified username.
sessionname The name of the session.
sessionid The ID of the session.
@filename Identifies a file containing a list of usernames,
sessionnames, and sessionids to send the message to.
* Send message to all sessions on specified server.
/SERVER:servername server to contact (default is current).
/TIME:seconds Time delay to wait for receiver to acknowledge msg.
/V Display information about actions being performed.
/W Wait for response from user, useful with /V.
message Message to send. If none specified, prompts for it
or reads from stdin.
На PowerShell:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$Computers = GC -Path C:\Temp\ComputersMsgBox.txt
 
$MesageBox = "Здравствуйте.
Завтра вам потребуется сменить пароль, которым пользовались 90 дней. 
Выполняя <Приказ....>
<Требования к паролям группы пользователей> - максимальный срок действия пароля - 90 дней
Напоминаю, 
пароль требуется ENGL-символы с содержанием заглавных и строчных букв, цифры, специальные символы с диакритическими знаками ( !@...?/)
не менее восьми символов.
Нельзя включать в пароль свои символы логина."
 
ForEach ( $Computer in $Computers )
{& msg.exe * /Server:$Computer /V $MesageBox}
Ответ:
Enter message to send; end message by pressing CTRL-Z on a new line, then ENTER
"Здравствуйте. ... + висяк. У пользователей ничего не происходит
Пока нашел причину, ни CMD, ни PS не понимают переменные %file% - $Computers в строке /Server:$Computer
Не понятно почему.
Если задать & msg.exe * /Server:NameComputer /V $MesageBox, сообщение пользователю приходит. Т.е. почему-то есть возможность стартовать для одного. К сожалению мне требуется намного больше.
Локально срабатывает MessageSend.ps1 с выводом сообщением для одного компьютера
PowerShell
1
2
$a = New-Object -ComObject WSCript.shell
$b = $a.popup("Здравствуйте....")
Но не работает, если стартовать из

PowerShell
1
2
3
$Computers = GC -Path C:\Temp\ComputersMsgBox.txt
ForEach ( $Computer in $Computers )
{ICM -ComputerName $Computer -filePath "\\Server\Share\MessageSend.ps1"}
MessageSend.ps1 у пользователя стартует, есть разрешение старта по сети.
Версия компов Windows 7, 10, 11
Есть ли решения, чтобы разбросать этот мессадж для всех компов?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2025, 10:19
Ответы с готовыми решениями:

Win32_PingStatus есть варианта для списка компьютеров? Для определения Resolved
Всем ДОБРОГО! Суть проблемы. Необходима таблица ( из текстового даже не пытаюсь, слишком накладно...

Определить MAC-адреса компьютеров, из указанного списка (задан ip адрес)
Помогите написать vbs-скрипт для определения MAC-адреса компьютеров, из указанного списка (задан ip...

Вывод списка компьютеров из AD в текстовый файл
Есть задача вывести список компьютеров из AD в текстовый файл. Нашел код для вывода списка в файл:...

4
 Аватар для volodin661
6793 / 2290 / 348
Регистрация: 10.12.2013
Сообщений: 7,899
16.12.2025, 20:25
Цитата Сообщение от Segera Посмотреть сообщение
MessageBOX для списка компьютеров
msg.exe не для списка компьютеров, а для списка пользователей одного компьютера,
а, точнее, для Remote Desktop Session Host server. Сей факт недвусмысленно отражен в документации MS.

https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/msg

msg
Applies to: ✅ Windows Server 2025, ✅ Windows Server 2022, ✅ Windows Server 2019, ✅ Windows Server 2016, ✅ Windows 11, ✅ Windows 10, ✅ Azure Local 2311.2 and later.
Sends a message to a user on a Remote Desktop Session Host server.

/server:<servername> Specifies the Remote Desktop Session Host server whose session or user you want to receive the message. If unspecified, /server uses the server to which you are currently logged on.



Цитата Сообщение от Segera Посмотреть сообщение
Есть ли решения, чтобы разбросать этот мессадж для всех компов?
нмв Для произвольных узлов по-прежнему актуальным является psexec.

a) с помощью ИИ генерится исполняемый файл на C#, выкидывающий желаемый MessageBox*
или
б) использовать тот же msg.exe, но без ключа /server

и отдать а) или б) в качестве аргумента для psexec


(*) для компьютеров с Windows XP и без установленный .NET ничо не получится


Если речь о powershell, то надо использовать возможности powershell по удаленному управлению, a именно, его встроенный протокол ws-management ** для того, чтобы исполнять утилиты на удаленных компьютерах;
утилита msg с ключом /Server не годится по причине, описанной выше.


(**) Протокол ws-management всегда включен на Windows-серверах, но может быть отключен на клиентских комп.
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 580
17.12.2025, 10:50  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
) для компьютеров с Windows XP и без установленный .NET ничо не получится
целевые Windows 7, 10 (LTS), 11. .Net везде не ниже 4.7.
На C# нулевые знания, кроме некоторого понимания когда использовать void и подобное. Но сам скрипт без погружения на месяц-два, едва ли осилю. Привлекать ИИ для этого так себе идея. Особенно, если это "китайская грамота".
msg.exe успешно генерируется, если поднят RDS. Такой есть как сервер поддержки. Однострочное для одного компа 7,10,11 успешно работает. Но делать свой *.cmd для 675 хостов ( причем придется вставлять контроль доступности ) пока представляется кошмаром. Однако, если не найду решения, придется смотреть этот хоррор.
Цитата Сообщение от volodin661 Посмотреть сообщение
msg с ключом /Server не годится
да понял это.
Странно почему не работает конструкция ICM <$CompName> {msg.exe * /V <Вам привет и сообщение>}. Или "
PowerShell
1
2
$a = New-Object -ComObject WSCript.shell
$b = $a.popup("Здравствуйте....")
Если зайти с RDP на этот комп и запустить $a = New-Object - ... , окно сообщения срабатывает. Включая с "\\Server\Share\MessageSend.ps1"
Все WinRM активны и другие скрипты с ICM, включая запуск (Любой не msg.exe.ps1), выполняются.

Добавлено через 3 часа 51 минуту
похоже протестирован на первом десятке компов батник-CMD. Всё работает. Некоторые претензии к замедлению сек. на 3-4, если комп не доступен. Думаю это наименьшая проблема.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ECHO OFF
 
set now=%TIME:~0,-3%
set now=%now::=.%
set now=%now: =0%
set now=%DATE:~-4%.%DATE:~0,2%.%DATE:~3,2%-%now%
 
Setlocal EnableDelayedExpansion
SET "file=ComputersMsgBox.txt"
FOR /F %%H IN ('findstr /B /V /C:# %file%') DO (
PING %%H -n 1 | FIND "TTL=" > nul
if errorlevel 1 (COLOR 4F
echo %%H offline
echo %%H;Не доступен >> "RezultAccessAll-%now%.txt"
) else (
COLOR 2F
echo %%H;Сообщение доставлено >> "RezultAccessAll-%now%.txt"
PsExec.exe \\%%H /s cmd /c msg * "Здравствуйте.Завтра вам потребуется сменить пароль, которым пользовались 90 дней.Пароль требуется с содержанием заглавных и строчных букв,цифры,специальные символы с диакритическими знаками не менее 8 символов.Нельзя включать в пароль свои символы логина." ) )
Del null /Q /F
PsExec выручает в очередной раз. Респект Марку!
Позже потестю вариант на PShell. Ради спортивного интереса.
0
 Аватар для volodin661
6793 / 2290 / 348
Регистрация: 10.12.2013
Сообщений: 7,899
17.12.2025, 11:32
a зачем 18 строк мусора ?

заправить в планировщик
Code
1
psexec  @file msg * "Здравствуйте"
и всё.
0
163 / 50 / 5
Регистрация: 03.06.2020
Сообщений: 580
17.12.2025, 13:50  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
a зачем 18
Если б не это "мусовр", не было б актуально журнал для кого прилетело, кто пока не включился. Это раз.
Два в @file запись в виде (Computer01,Computer02,Computer03...). В SET "file=ComputersMsgBox.txt" простой копипаст в столбик из экселя.
Три, наверное псек лучшее и главное быстрое решение. Чем что-то с New-Object -ComObject WSCript.shell, ... Add-Type -AssemblyName System.Windows.Forms ... "Add-Type -AssemblyName PresentationFramework;[System.Windows.MessageBox]::Show('Hello World')" ... и многое ещё, с учетом где-то работает кодировка С1251, а тут же без 866 никак.
С ПСЕКом один CMD в кодировке 866 и всё работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2025, 13:50
Помогаю со студенческими работами здесь

Открыть сетевые папки из списка компьютеров
Есть во всех рабочих станциях определенная папка, куда записываются файлы от одного специфичного...

Подключить все доступные сетевые ресурсы из указанного списка компьютеров
Помогите пожалуйста с заданием. Подключить все доступные сетевые ресурсы из указанного списка...

Как сделать один интернет для двух компьютеров?
У меня есть ноутбук подключен к интернету с одной сетевой картой и есть второй компьютер без...

Как вычислить IP - адреса доступные для компьютеров подсети?
Вот например для конкретной подсети и маски: Сколько IP-адресов доступно для компьютеров в подсети...

Создание общей папки для нескольких компьютеров
есть сервак на windows 2003 на нём БД и файлы и нужно создать папку и открыть доступ для некоторых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru