После создания скрипта для изменения строки подключения к 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.
PowerShell -ExecutionPolicy RemoteSigned .\ChangeServerNameOnRDPFiles.ps1
Указать политику выполнения весьма желательно, иначе скрипт может быть не выполнен на клиентских компьютерах. Проверить отработку скрипта всегда можно с командной строки на компьютере:
Так как в данной задаче нам необходимо изменить сервер подключения в RDP файлах на рабочем столе пользователей, указываем требование для запуска “Только после входа пользователя” и режим выполнения “Запустить с правами пользователя”.
Завершающим этапом создания программы укажем операционные системы, на которых должна работать программа.
Понятно, что в данной задаче выбираем только клиентские операционные системы.
На этом создание программы закончено.
Распространим пакет по точкам распространения и развернём на необходимую коллекцию компьютеров.
Развёртывание выполняем с обязательным намерением.
В расписании создадим тип “Как можно скорее”.
Повторный запуск оставляем по умолчанию, в данной задаче нам это подходит. Оставшиеся шаги мастера можно оставить по умолчанию.
Через некоторое время можно посмотреть мониторинг по развёртыванию, чтобы убедиться об успешном выполнении программы.
Если в развёртывании пакетов что-то пойдёт не так, более детальную информацию можно всегда получить с клиентского лога execmrg.log (как правило расположен в каталоге %windir%\CCM\Logs).
В данном примере, распространение и выполнение прошло успешно, но раз заговорили о клиентских логах, посмотрим что там:
С небольшого куска лога видно, какая команда будет запущена в контексте пользователя, видны идентификаторы развёртывания и пакета, также видно расположение контента. В завершении представленного куска лога мы видим, что выполнение команды завершается с кодом 0, т.е. без ошибки.
Такую доставку и выполнение выполнение PS/VBS скриптов с помощью SCCM мы находим более удобной, чем использование logon-скриптов в групповых политиках и причина тому – возможность мониторинга статуса выполнения задачи.
Большое спасибо, Виталий, за вашу статью!
Виталий, вопрос: параметры "Только после входа пользователя" и " как можно скорее" определяют, что задача выполнится сразу же после входа пользователя? Или есть задержка?
Задача начнёт выполнятся сразу, как CM клиент обнаружит доступное развёртывание, конечно в том случае, если в системе будет пользователь, т.е. момент непосредственного входа роли не играет.
Тест который я проводил для статьи показал, что после обнаружения развёртывания, клиенту CM потребовалось 4 секунды для выполнения задачи.
Скорость выполнения скрипта зависит от мощности ПК.
Обратная ссылка: Выполнение сценариев с обратной связью с помощью System Center 2012 Configuration Manager | Блог IT-KB /
Обратная ссылка: Распространение и выполнение сценариев PowerShell с помощью System Center 2012 Configuration Manager | vMind.ru /