Распространение и выполнение сценариев PowerShell с помощью System Center 2012 Configuration Manager

Виталий Якоб показывает, как выполнять Powershell-скрипты с помощью SCCM2012.

После создания скрипта для изменения строки подключения к RDS-ферме в RDP файлах пользователей нам нужно этот скрипт как-то доставить и выполнить на нескольких сотнях компьютеров. В этом непростом деле нам вновь поможет System Center 2012 Configuration Manager (SCCM).

Первым делом сохраним сценарий PowerShell в доступном сетевом расположении.

Перейдём к консоль SCCM и вызовем мастер создания пакета (Package). Присвоим имя создаваемому пакету, например “KOM Package Change Server name On RDP”. Укажем, что пакет имеет исходные файлы и укажем путь к каталогу с скриптом.

image_thumb243

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

image_thumb244

Далее мастер переходит в меню создания программы, которая и будет разворачиваться на компьютерах. Присвоим программе имя, например “KOM Program Change Server name On RDP”

image_thumb245

Так как выполнение программы подразумевает выполнение чего-либо в командной строке (CMD), нам необходимо указать вызов PowerShell с политикой выполнения скриптов RemoteSigned.

PowerShell -ExecutionPolicy RemoteSigned .\ChangeServerNameOnRDPFiles.ps1

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

image_thumb246

Так как в данной задаче нам необходимо изменить сервер подключения в RDP файлах на рабочем столе пользователей, указываем требование для запуска “Только после входа пользователя” и режим выполнения “Запустить с правами пользователя”.

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

image_thumb247

Понятно, что в данной задаче выбираем только клиентские операционные системы.

На этом создание программы закончено.

Распространим пакет по точкам распространения и развернём на необходимую коллекцию компьютеров.

Развёртывание выполняем с обязательным намерением.

image_thumb248

В расписании создадим тип “Как можно скорее”.

image_thumb249

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

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

image_thumb250

Если в развёртывании пакетов что-то пойдёт не так, более детальную информацию можно всегда получить с клиентского лога execmrg.log (как правило расположен в каталоге %windir%\CCM\Logs).
В данном примере, распространение и выполнение прошло успешно, но раз заговорили о клиентских логах, посмотрим что там:

image_thumb251

С небольшого куска лога видно, какая команда будет запущена в контексте пользователя, видны идентификаторы развёртывания и пакета, также видно расположение контента. В завершении представленного куска лога мы видим, что выполнение команды завершается с кодом 0, т.е. без ошибки.

Такую доставку и выполнение выполнение PS/VBS скриптов с помощью SCCM мы находим более удобной, чем использование logon-скриптов в групповых политиках и причина тому – возможность мониторинга статуса выполнения задачи.

Распространение и выполнение сценариев PowerShell с помощью System Center 2012 Configuration Manager: 5 комментариев

  1. Что бы не вводить пользователей в заблуждение, вместо RemoteSigned правильнее указывать Bypass.
    В случае с RemoteSigned, скрипт должен быть подписан, а тут про это не слова.

  2. Serg, Почему?
    RemoteSigned разрешает использование локальных скриптов, а этого вполне достаточно.
    Свой скрипт я ни как не подписывал.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *