Команда Msg (примеры, переключатели и многое другое) – КАК 2022

Msg msg

Область применения: Windows Server (половина ежегодного канала), Windows Server 2022, Windows Server 2022, Windows Server 2022 R2, Windows Server 2022 Applies to: Windows Server (Semi-Annual Channel), Windows Server 2022, Windows Server 2022, Windows Server 2022 R2, Windows Server 2022

Windows 10 msg команда загадка – 3 ответа

Я опытный пользователь Windows с давних времен. Мой главный компьютер – Windows 7 Pro. Мы купили новый компьютер для нового офиса; на нем, конечно, установлена ​​Windows 10 (Home). Я работал над новым ПК и хотел отправить результат того, что я делал – IPv6-адрес принтера – обратно на ПК с Win 7. Я хотел использоватьNET SEND но это не доступно на Win 10 (или Win 7, как выясняется).

Исследования показали, что MSGкоманда должна (вроде) делать то, что NET SENDделали в старые времена. Пример веб-сайта показал окно командной строки с текущим каталогом C: WINDOWS SYSTEM32 и показал результат MSG /?предоставления синтаксиса команды – как раз то, что я хотел.

Но запуск MSG /?на Win 10 box сказал, что MSG не был распознан как команда. (Это работает на Win 7, с MSG.EXE в SYSTEM32.) Немного копания MSG.EXEв каталоге под WinSxS –

C:WindowsWinSxSamd64_microsoft-windows-t..commandlinetoolsmqq_31bf3856ad364e35_10.0.17134.1_none_0ea9fdb9152f846c

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

Я проверил «Программы» (что раньше называлось «Программы и компоненты») и не увидел в нем что-то, что я мог установить.

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

Спасибо за любую помощь.

Аннотация

MSG отправляет сообщение.

Дополнительные замечания

Если пользователь или сеанс не указан, msg отображает сообщение об ошибке. Если указано имя сеанса, он должен определить активный сеанс. Для параметров могут использоваться поддиаограммы. Если присутствует один поддианс (*), он указывает всех пользователей в системе.

Доступность команд msg

Команда msg доступна из командной строки в последних версиях операционных систем Windows, включая Windows 10, Windows 8, Windows 7, Windows Vista и Windows XP.

Команда msg также доступна с помощью инструмента командной строки, доступного в разделе «Дополнительные параметры запуска» и «Параметры восстановления системы».

Заметка: Доступность определенных командных переключателей msg и другого синтаксиса команды msg может отличаться от операционной системы к операционной системе.

Команды сервера терминалов: msg

В этой статье вводится синтаксис и параметры команд СЕРВЕРА терминалов MSG.

:/>  Сворачивается игра при уведомлениях windows 10. Решение проблемы

Исходная версия продукта: Windows 10 — все выпуски Исходный номер КБ: 186480

Ограничения безопасности

Пользователь должен иметь разрешение на доступ к сообщению для сеанса.

Отправка уведомлений с помощью командной строки, оповещения с сервера на клиент с помощью командной строки

Часто возникает необходимость оповестить клиента о какой нибудь информации (Например о новом сформированном документе) с сервера. На данный момент, в типовых методах 1С нет возможности оповестить клиента с сервера, в основном существующие методы оповещения построены на принципе периодического “опроса” клиента на сервер. Проще говоря “обработчики ожидания”. Многие разработчики используют обработчики ожидания, либо разрабатываютиспользуют внешние компоненты для реализации подобной задачи. Типовые механизмы: напоминания, уведомления, задачи … так же используют периодический зарос сервера на появление новых данных.

Далее будет показан пример, как отправить уведомление с сервера на клиент используя команду (командной строки Windows ) – MSG

“Команда MSG существовала еще в Windows 2000/XP и предназначалась для обмена сообщениями между пользователями вошедшими в систему локально и пользователями терминальных сессий ( подключившихся к удаленному рабочему столу ) . В Windows Vista и более поздних операционных системах семейства Windows команда MSG стала основным стандартным средством обмена сообщениями, поскольку команда net send в данных ОС больше не поддерживается.”

Для примера возьмем небольшой код использования данного механизма:

///Модуль Web-Сервиса Пример1
                                                                                                   
Процедура СоданияДокумента(Параметры) 
                                                                                                        
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(Текст);
    
    //прочитаем начало xml файла
    Чтение.ПерейтиКСодержимому();
    
    //прочитаем начало корневого элемента
    Чтение.Прочитать();
    
    //читаем содержимое пока текущим не станет конец корневого элемента, т.к. мы писали туда только целые элементы справочника,
    //а сериализатор читает каждый из их полностью, то мы упремся именно в конец корневого
    Пока Чтение.ТипУзла<>ТипУзлаXML.КонецЭлемента Цикл
                                                                                                             
        НовыйДокумент = Документы.АвансовыйОтчет.СоздатьДокумент();

        //читаем очередной элемент справочника
        Объект = СериализаторXDTO.ПрочитатьXML(Чтение);

        ЗаполнитьЗначенияСвойств(НовыйДокумент,Объект );
                                                                                         
        Попытка
            НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение); 
            ///Записываем документ и отправляем уведомление о новом документе                                          
            ОповеститьПользователяОНовомДокументе(НовыйДокумент.Ссылка)
        Исключение
            ТекстОшибки = ОписаниеОшибки();
        КонецПопытки;
                                                                                 
    КонецЦикла;
    
    Чтение.Закрыть();                                                                                                      
                                                                                                                                                                                                                                               
КонецПроцедуры
                                                                                                     
Процедура ОповеститьПользователяОНовомДокументе(Ссылка)
    ///Пример отправки уведомления 
    ///Получим список активных пользователей Информационной базы
    ///Делаем отбор по "Бухгалтеру" и отправляем                                                                                           
    Попытка
        массивСоединений = ПолучитьСоединенияИнформационнойБазы(); ///Получаем список активных пользователей
    	Для каждого масс из массивСоединений цикл

	    	Если масс.ИмяПриложения	= "1CV8C" тогда ///1С Предприятие
		    	Если масс.ИмяПользователя = "Бухгалтер" Тогда  ///Отправляем уведомление Бухгалтеру
			        ИмяКомпьютера = масс.ИмяКомпьютера;
                    СтрокаМСГ = "MSG /time:1000 /server:"  СокрЛП(ИмяКомпьютера) " * "   "Сформирован новый документ: "   строка(Ссылка);;
    		        ЗапуститьПриложение(СтрокаМСГ);
                КонецЕсли;
		    КонецЕсли;
	    КонецЦикла;
    Исключение
        ТекстОшибки = ОписаниеОшибки();                                                    
    КонецПопытки;


    ///Либо сразу пропишем ИмяКомпьютера "Бухгалтера" 
    ///В случае если Бухгалтер не работает в программе 1С на данный момент.
    //Попытка 

    //    ИмяКомпьютера = "buhgalter-1";
    //    СтрокаМСГ = "MSG /time:1000 /server:"  СокрЛП(ИмяКомпьютера) " * "   "Сформирован новый документ: "   строка(Ссылка);;
    //	ЗапуститьПриложение(СтрокаМСГ);
        
    //Исключение
    //    ТекстОшибки = ОписаниеОшибки();                                                    
    //КонецПопытки;
                                                                                                   
КонецПроцедуры

В примере рассматривается отправка уведомления Бухгалтеру.

Команда Msg (примеры, переключатели и многое другое) - КАК 2022

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

:/>  5 распространенных ошибок Microsoft Store и способы их исправить

Пример реализации:

///Получаем имена компьютеров локальной сети
///Заносим имена в табличную часть "Компьютеры" 

&НаСервере
Процедура ПолучитьВсеКомпьютерыЛокальнойСети()
                                                                                       
	Компьютеры.Очистить();
    
    ///Для получения Списка локальных и терминальных пользователей используем команду
    /// cmd -  "Net View" 
    ///Команда net view выводит список доменов, компьютеров или общих ресурсов на данном компьютере. 
    ///Вызванная без параметров, команда net view выводит список компьютеров в текущем домене. 
                                                                                         
	objShell = Новый COMОбъект("WScript.Shell") ;
    objScriptExec = objShell.Exec("Net View") ;
    strPingResults = НРег(objScriptExec.StdOut.ReadAll());
                                                                                            
	Для Индекс = 1 По СтрЧислоСтрок(strPingResults) Цикл
        ПолучитьКомп(СтрПолучитьСтроку(strPingResults, Индекс));
    КонецЦикла;
                                                                                          
КонецПроцедуры

Процедура ПолучитьКомп(ММ)  ///Форматируем имя компьютера (Удаляем лишние символы)

    ///Имя компьютера в локальной сети будет иметь вид: "\Admin"      
	НачСлова = СтрНайти(ММ,"\");

	Если НачСлова = 0 тогда
		возврат;
	КонецЕсли;

	КонСлова = СтрНайти(ММ," ",,НачСлова);

	Комп = СокрЛП(Сред(ММ,НачСлова 2,КонСлова - НачСлова));	

	Компьютеры.Добавить().ИмяКомпьютера = Комп;
КонецПроцедуры

///В итоге получаем Таблицу с именами компьютеров в локальной сети
///Далее, выбираем нужных пользователей и отправляем уведомление             

&НаСервере
Процедура ОтправитьУведомленияНаСервере()
                                                                                            
	Для каждого стр из Компьютеры цикл   ///Пометка - вторая колонка Табличной части, для ручного выбора пользователей
		Если стр.Пометка тогда    
			СтрокаМСГ = "MSG /time:1000 /server:"  СокрЛП(стр.ИмяКомпьютера) " * "   Сообщение;
    		ЗапуститьПриложение(СтрокаМСГ);
		КонецЕсли;
	КонецЦикла;
                                                                                              
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьУведомления(Команда)
                                                                                              
	Если ПустаяСтрока(Сообщение) тогда
		ПоказатьОповещениеПользователя("Отсутсвует сообщение!");
		возврат;
	КонецЕсли;
                                                                                               
	ОтправитьУведомленияНаСервере();
                                                                                             
КонецПроцедуры

Команда Msg (примеры, переключатели и многое другое) - КАК 2022

Параметры MSG и Возможные ошибки:

Нынешняя реализация msg.exe прекрасно подходит для обмена сообщениями между сеансами локальных и терминальных пользователей в пределах одной системы, однако, в случаях обмена между разными компьютерами локальной сети, потребуется изменить некоторые настройки безопасности, принятые по умолчанию в операционных системах Windows Vista, 7 и более поздних.

При стандартных настройках, отправка сообщения пользователям удаленных компьютеров не выполняется и сопровождается сообщением:

Ошибка 1722 при получении имен сеанса

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

на каждом компьютере, которому будут отправляться сообщения, добавить в раздел реестра HKLMSYSTEMCurrentControlSetControlTerminal Server параметр AllowRemoteRPC типа REG_DWORD и равный 1 Для изменения настроек можно использовать .reg-файл следующего содержания:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server]“AllowRemoteRPC”=dword:00000001

В ОС Windows Vista, Windows 7, 8, 10 ключ реестра AllowRemoteRPC существует, но имеет значение равное 0 , что необходимо исправить. Для применения изменений требуется перезагрузка.

поскольку для обмена сообщениями утилита msg.exe использует протокол SMB (Server Message Block ), на каждом компьютере, которому будут отправляться сообщения, должен быть открыт TCP порт 445

Примеры использования MSG:

msg * /server:Server “Тестовое сообщение “ – отправить тестовое сообщение всем пользователям компьютера Server

:/>  Ошибка 0x0000000a при установке или работе Windows 7

msg * /server:192.168.0.1 “Тестовое сообщение ” – отправить тестовое сообщение всем пользователям компьютера с IP-адресом 192.168.0.1

msg RDP-Tcp#0 /server:TSServer “Тестовое сообщение” – отправить тестовое сообщение пользователю терминальной сессии с именем RDP-Tcp#0 на компьютере TSServer

msg console /server:Windows7 “Тестовое сообщение” – отправить тестовое сообщение текущему локальному пользователю компьютера Windows7

msg console “Тестовое сообщение” – отправка тестового сообщения от пользователя сеанса RDP локальному пользователю. Если эта команда выполняется не пользователем терминальной сессии, то сообщение будет отправлено локальным пользователем самому себе.

Для выполнения команды msg от имени другого пользователя можно воспользоваться утилитой PSExec из пакета PSTools или штатным средством runas.exe

psexec -u otheruser -p otherpass msg * /server:win10 TEST message

runas /user:otheruser “msg * /server:win10 Test message”

Сообщения, отправляемые командой msg локальному пользователю компьютера с операционной системой Windows XP, который отсутствует ( еще не вошел в Windows ) отображаются в окне с приглашением к регистрации в системе и могут быть доступны посторонним.

Источник MSG.

К данной статье прикреплена обработка для отправки уведомления. Обработка тестировалась на конфигурации ЗУП (3.1.9.108).

Универсальная, подходит конфигурациям на управляемых формах.

Примеры

Чтобы отправить сообщение Под названием «Фоладель»? для всех сеансов для пользователя MIKES введите:

Чтобы отправить сообщение на сеанс MODEM02, введите:

Чтобы отправить сообщение в сеанс 12, введите:

Связанные команды msg

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

Кроме того, как уже упоминалось несколько раз, команда msg аналогична команде отложенного net send.

Использование команды msg для замены net send

Команда msg предназначена для использования в качестве системы обмена сообщениями для пользователей сервера терминалов, не обязательно между двумя компьютерами Windows 7, например.

На самом деле вам может быть трудно получить команду msg для работы между двумя стандартными машинами Windows, такими как команда net send. Вы можете получить «Ошибка 5 получения имен сеанса» или ошибку «Ошибка 1825 получения имен сеанса».

Однако некоторым из них повезло использовать команду msg таким образом, изменив AllowRemoteRPC данные значения реестра из 0 в 1 на компьютере, получающем сообщение (перезагрузите компьютер после изменения, если вы это сделаете).

Этот ключ находится в реестре Windows под улей HKEY_LOCAL_MACHINE в этом месте: SYSTEM CurrentControlSet Control Terminal Server .

Оставьте комментарий

Adblock
detector