none
SCCM 2012 R2 + pop up message RRS feed

  • Общие обсуждения

  • Приветствую всех.

    Есть задачка - распространяю через SCCM определённый скрипт, в нём нужно оповещать пользователя о производимых действиях на ПК. Это можно сделать, например, таким кодом в батнике:

    START CMD /C "ECHO 'Нужный нам текст сообщения'"


    Либо тоже самое, только через VBS:

    Set objArgs = WScript.Arguments
    messageText = objArgs(0)
    MsgBox messageText
    cscript notification.vbs "Нужное нам сообщение"

    Так вот, когда запускаешь вручную - работает, сообщения показывает. Когда распространяешь через SCCM - не работает. Т.к. контент загружается, но скрипт не выполняется почему-то. В логах пусто, да и что он там должен показать то. 

    Права пользователю давал админа, отключал UAC.

    Может быть ещё есть какие-то особенности, про которые я не знаю?

Все ответы

  • на устройство или на пользователя распространяете скрипт?
  • Пробовал и так и так.

    Одинаково не работает.

    Причем на двух разных тестовых машинах (Win 7, Win 8.1)

  • Скрипт выполняется в контексте учетной записи агента (обычно System). Поэтому ваши скрипты выводят сообщение "туда".

    Попробуйте использовать msg.exe или создавать скриптом задачу планировщика запускаемую в контексте пользователя.


    Сазонов Илья

    https://isazonov.wordpress.com/

    Модератор
  • в cmd

    msg * /w /TIME:180 "Начинается процесс установкиПожалуйста, закройте все приложения и нажмите ОК или через 3 минуты процесс установки начнется автоматически!. "

  • просто используйте powershell app deployment toolkit 

    SCCM Blog: http://masyan.ru SCCM User Group Russia: https://www.facebook.com/groups/sccm.russia/

    Модератор
  • Этот вариант подходит в том случае, если у меня сложный bat-скрипт, который проверяет различные версии ПО и т.д.? Можно ли вызывать эти уведомления из bat?
  • Не работает, всё равно выводит в SYSTEM, судя по всему.

    Как бы я не запускал её.

  • Не работает, всё равно выводит в SYSTEM, судя по всему.

    Как бы я не запускал её.

    Что именно?

    Сазонов Илья

    https://isazonov.wordpress.com/

    Модератор
  • вывод сообщения msg не выводит текущему пользователю ничего.

    По всей видимости поток вывода перенаправляется УЗ агента.

  • А как запускаете?

    Сазонов Илья

    https://isazonov.wordpress.com/

    Модератор
  • ну у меня в SCCM пакет, в пакете запускается showntf.bat.

    В самом батнике msg * /w /TIME:180 "message"

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

    Exception calling "Show" with "4" argument(s): "Showing a modal dialog box or f	RunPowerShellScript	06.06.2016 15:59:34	4228 (0x1084)
    orm when the application is not running in UserInteractive mode is not a valid 	RunPowerShellScript	06.06.2016 15:59:34	4228 (0x1084)
    operation. Specify the ServiceNotification or DefaultDesktopOnly style to displ	RunPowerShellScript	06.06.2016 15:59:34	4228 (0x1084)
    

    Тут я пытаюсь вызвать интерфейс через [System.Windows.Forms], и вот такая ругань сыпется в ТС. Через пакет не пробовал, но возможно у вас нечто похожее... Хотя сама по себе msg.exe не является чем то интерактивным =/ Надо курить

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

    Сазонов Илья

    https://isazonov.wordpress.com/

    Модератор
  • Спасибо, получилось.

    Схема такая - делаем приложение (application), которое собственно выполняет нашу основную задачу (например, обновляет офис). У него на вкладке "Зависимые приложения" выбираем предварительно созданное нами приложения для вывода уведомлений пользователя. Это подприложене мы конечно же будем запускать с правами пользователя, что в настройках и проставляем.

    В общем, весьма геморно. Жаль что нет адекватного механизма.

  • Лучше наверно ставить к приложению с msg.exe в зависимые приложения Офис. Дабы сначала как необходимость ставился офис и в случае успеха установки выдавался бы pop-up. Ну в смысле сэтапиться офис, срабатывает детекшн - все ок, значит выполняется программа с msg.exe.

    А так получается сначала идет pop-up независимо от удачности установки офиса =/ Хотя как вариант оповещения а-ля "Сейчас будет проведено обновление" использовать можно =)


    • Изменено NTLose 8 июня 2016 г. 6:30
  • Именно для целей оповещения ПЕРЕД началом установки сделано так.

    Только вот загвоздка, я тестировал на ПК с админскими правами, а под обычным пользователем без прав не запускается schtasks :(

    

  • задачу на пользователя можно создать в контексте администратора.

    Сазонов Илья

    https://isazonov.wordpress.com/

    Модератор
  • скажите пожалуйста msg вывод вы тестируете на ПК, на котором залогинены по RDP ?

    msg * это выводить во все сессии, но  выводит он их последовательно к примеру  /w /TIME:180 "message" то message на протяжении 3х минут показывается в консольную сессию после чего переходит к следующей и опять 3 мин. 


    8 июня 2016 г. 10:55
  • Да, по RDP.

    Т.е. есть шанс что я просто не попадаю в текущий вывод в данной сессии? Так сессий там только одна - моя.

    8 июня 2016 г. 11:34
  • Вы, наверное, про пакет говорите?

    В пакете можно, в приложении нельзя.

    8 июня 2016 г. 11:54
  • А, или Вы про контекст schtasks?

    Ну , можно, конечно, через ключи /U и /P, но это ж придётся передавать пароль от доменного админа в открытом виде. По другому как-то можно?

    8 июня 2016 г. 13:00
  • Да, по RDP.

    Т.е. есть шанс что я просто не попадаю в текущий вывод в данной сессии? Так сессий там только одна - моя.

    ваша сессия RDP это сессия имеет ID 1, консольная сессия ID 0, в принципе можете зайти по RDP в консольную сессию используя в параметре подключения /admin.

    при /w /TIME:180  он ожидает нажатие ОК 3 минуты, после чего окно закрывается и он переходит в следующую сессию. попробуйте например /w /TIME:10  и подождите немного.

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




  • Спасибо за помощь!

    Но к сожалению у меня не работает этот подход.

    Всё стандартно - есть пакет, который запускает батник, в батнике

    msg * /w /TIME:10 "message"

    Пакет загружается, но скрипт НЕ отрабатывает. Тестировал под правами юзера и админа. Может быть я что-то делаю не так?


    • Изменено DenisBobkov 9 июня 2016 г. 22:51
    9 июня 2016 г. 22:51
  • что в логе на клиенте %windir%\ccm\logs\execmgr.log ?

    и еще вопрос, пробовали просто данный батник руками запускать, так же не отрабатывает ?

    10 июня 2016 г. 6:06