Распространение и выполнение сценариев 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-скриптов в групповых политиках и причина тому – возможность мониторинга статуса выполнения задачи.

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

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

  1. Serg говорит:

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

  2. Алексей говорит:

    Андрей, обращай внимание на автора, — это заметка Виталия Якоба 🙂

  3. A.Vakhitov говорит:

    Косячина 🙁
    Перед Виталием извинись за меня. Сейчас поправлю.

  4. Виталий говорит:

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

  5. Виталий говорит:

    Serg, Проверку подписи полностью я отключал в другом примере развёртывания PS скриптов.
    http://blog.it-kb.ru/2013/09/27/deploy-and-execute-powershell-scripts-with-system-center-2012-configuration-manager-with-configurations-baselines/

    Этот пример мне нравится гораздо больше, чем пакетный. 🙂

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

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