Виталий Якоб показывает, как выполнять Powershell-скрипты с помощью SCCM2012.
После создания скрипта для изменения строки подключения к RDS-ферме в RDP файлах пользователей нам нужно этот скрипт как-то доставить и выполнить на нескольких сотнях компьютеров. В этом непростом деле нам вновь поможет System Center 2012 Configuration Manager (SCCM).
Первым делом сохраним сценарий PowerShell в доступном сетевом расположении.
Перейдём к консоль SCCM и вызовем мастер создания пакета (Package). Присвоим имя создаваемому пакету, например “KOM Package Change Server name On RDP”. Укажем, что пакет имеет исходные файлы и укажем путь к каталогу с скриптом.
Следующий шаг оставим по умолчанию. Потому как нам необходима стандартная программа для выполнения на компьютерах.
Далее мастер переходит в меню создания программы, которая и будет разворачиваться на компьютерах. Присвоим программе имя, например “KOM Program Change Server name On RDP”
Так как выполнение программы подразумевает выполнение чего-либо в командной строке (CMD), нам необходимо указать вызов PowerShell с политикой выполнения скриптов RemoteSigned.
1 |
PowerShell -ExecutionPolicy RemoteSigned .\ChangeServerNameOnRDPFiles.ps1 |
Указать политику выполнения весьма желательно, иначе скрипт может быть не выполнен на клиентских компьютерах. Проверить отработку скрипта всегда можно с командной строки на компьютере:
Так как в данной задаче нам необходимо изменить сервер подключения в RDP файлах на рабочем столе пользователей, указываем требование для запуска “Только после входа пользователя” и режим выполнения “Запустить с правами пользователя”.
Завершающим этапом создания программы укажем операционные системы, на которых должна работать программа.
Понятно, что в данной задаче выбираем только клиентские операционные системы.
На этом создание программы закончено.
Распространим пакет по точкам распространения и развернём на необходимую коллекцию компьютеров.
Развёртывание выполняем с обязательным намерением.
В расписании создадим тип “Как можно скорее”.
Повторный запуск оставляем по умолчанию, в данной задаче нам это подходит. Оставшиеся шаги мастера можно оставить по умолчанию.
Через некоторое время можно посмотреть мониторинг по развёртыванию, чтобы убедиться об успешном выполнении программы.
Если в развёртывании пакетов что-то пойдёт не так, более детальную информацию можно всегда получить с клиентского лога execmrg.log (как правило расположен в каталоге %windir%\CCM\Logs).
В данном примере, распространение и выполнение прошло успешно, но раз заговорили о клиентских логах, посмотрим что там:
С небольшого куска лога видно, какая команда будет запущена в контексте пользователя, видны идентификаторы развёртывания и пакета, также видно расположение контента. В завершении представленного куска лога мы видим, что выполнение команды завершается с кодом 0, т.е. без ошибки.
Такую доставку и выполнение выполнение PS/VBS скриптов с помощью SCCM мы находим более удобной, чем использование logon-скриптов в групповых политиках и причина тому – возможность мониторинга статуса выполнения задачи.
Что бы не вводить пользователей в заблуждение, вместо RemoteSigned правильнее указывать Bypass.
В случае с RemoteSigned, скрипт должен быть подписан, а тут про это не слова.
Андрей, обращай внимание на автора, – это заметка Виталия Якоба 🙂
Косячина 🙁
Перед Виталием извинись за меня. Сейчас поправлю.
Serg, Почему?
RemoteSigned разрешает использование локальных скриптов, а этого вполне достаточно.
Свой скрипт я ни как не подписывал.
Serg, Проверку подписи полностью я отключал в другом примере развёртывания PS скриптов.
http://blog.it-kb.ru/2013/09/27/deploy-and-execute-powershell-scripts-with-system-center-2012-configuration-manager-with-configurations-baselines/
Этот пример мне нравится гораздо больше, чем пакетный. 🙂