Создание и запуск сценариев PowerShell из консоли Configuration Manager

Относится к Configuration Manager (Current Branch)

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

Примечание.

В версии 2006 и более ранних версиях Configuration Manager не включает эту необязательную функцию по умолчанию. Перед использованием этой функции необходимо включить ее. Дополнительные сведения см. в статье "Включение необязательных компонентов из обновлений".

Благодаря этой интеграции в Configuration Manager вы можете использовать функцию "Запуск скриптов" для выполнения следующих задач:

  • Создавайте и изменяйте сценарии для использования с Configuration Manager.
  • Управление использованием сценариев с помощью ролей и областей безопасности.
  • Поддержка папок для сценариев.
  • Запускайте сценарии в коллекциях или на отдельных локально управляемых компьютерах с Windows.
  • Планирование времени выполнения сценариев в UTC в коллекциях или на отдельных локально управляемых компьютерах с Windows.
  • Быстро получать агрегированные результаты сценариев с клиентских устройств.
  • Следите за выполнением сценариев и просматривайте результаты отчетов по выходным данным сценариев.

Предупреждение

  • Учитывая возможности сценариев, мы напоминаем вам о необходимости быть осторожными при их использовании. Мы предусмотрели дополнительные меры безопасности, чтобы помочь вам. Сегрегированные роли и области. Обязательно проверяйте точность сценариев перед их запуском и убедитесь, что они получены из надежного источника, чтобы предотвратить непреднамеренное выполнение сценариев. Будьте внимательны к длинным персонажам и другим запутываниям и узнайте, как защитить сценарии. Дополнительные сведения о безопасности сценариев PowerShell
  • Некоторые антивредоносные программы могут непреднамеренно запускать события, связанные со сценариями запуска Configuration Manager или функциями CMPivot. Рекомендуется исключить %windir%\CCM\ScriptStore, чтобы антивирусное программное обеспечение позволяло запускать эти функции без помех.

Предварительные условия

  • Для запуска сценариев PowerShell на клиенте должна быть запущена оболочка PowerShell версии 3.0 или более поздней. Однако если запускаемый сценарий содержит функции более поздней версии PowerShell, клиент, на котором запускается сценарий, должен работать под управлением этой версии PowerShell.
  • Клиенты Configuration Manager должны запускать клиент начиная с версии 1706 или более поздней, чтобы запускать сценарии.
  • Чтобы использовать сценарии, необходимо быть членом соответствующей роли безопасности Configuration Manager.
  • Импорт и создание сценариев: у вашей учетной записи должны быть разрешения на созданиесценариев SMS.
  • Чтобы утверждать или отклонять сценарии: у вашей учетной записи должны быть разрешения на утверждениесценариев SMS.
  • Для запуска сценариев: у вашей учетной записи должны быть разрешения на запуск сценариев для коллекций.

Дополнительные сведения о ролях
безопасности Configuration Manager:Области безопасности для сценариев запуска Роли
безопасности для сценариев
запускаОсновы администрирования на основе ролей.

Ограничения

Запуск скриптов сейчас поддерживает:

  • Языки сценариев: PowerShell
  • Типы параметров: целое число, строка и список.

Предупреждение

Имейте в виду, что при использовании параметров открывается контактная зона для потенциального риска атаки путем внедрения PowerShell. Существуют различные способы устранения и обходные пути, например использование регулярных выражений для проверки вводимых параметров или использование предопределенных параметров. Рекомендуется не включать в сценарии PowerShell секреты (без паролей и т. д.). Подробнее о безопасности скриптов PowerShell

Запуск авторов и утверждающих сценариев

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

Управление ролями сценариев

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

Утверждение и отклонение сценария

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

  1. В консоли Configuration Manager щелкните "Библиотека программного обеспечения".
  2. В рабочей области "Библиотека программного обеспечения " щелкните "Сценарии".
  3. В списке Сценарий выберите сценарий, который нужно утвердить или отклонить, а затем на вкладке Главная в группе Сценарий щелкните Утвердить или отклонить.
  4. В диалоговом окне "Утвердить или отклонить сценарий " выберите "Утвердить" или "Отклонить " для сценария. При желании введите комментарий о своем решении. Если вы запретите сценарий, его нельзя будет запустить на клиентских устройствах.
    Сценарий — Утверждение
  5. Завершите работу мастера. В списке сценариев столбец "Состояние утверждения " изменяется в зависимости от предпринятого действия.

Разрешить пользователям утверждать собственные сценарии

Это утверждение в основном используется на этапе тестирования разработки сценария.

  1. В консоли Configuration Manager щелкните Администрирование.
  2. В рабочей области "Администрирование " разверните узел "Конфигурация сайта" и выберите пункт "Сайты".
  3. В списке сайтов выберите сайт, а затем на вкладке " Главная " в группе "Сайты " щелкните "Параметры иерархии".
  4. На вкладке " Общие " диалогового окна "Параметры иерархии " снимите флажок "Авторам сценариев требуется дополнительный утверждающий сценарий".

Важно!

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

Области безопасности

Функция "Запуск сценариев" использует области безопасности, существующую функцию Configuration Manager, для управления созданием и выполнением сценариев путем назначения тегов, представляющих группы пользователей. Дополнительные сведения об использовании областей безопасности см. в статье Настройка администрирования на основе ролей для Configuration Manager.

Создание ролей безопасности для сценариев

Три роли безопасности, используемые для выполнения сценариев, по умолчанию не создаются в Configuration Manager. Чтобы создать роли средств запуска сценариев, авторов сценариев и утверждающих сценарии, выполните описанные действия.

  1. В консоли Configuration Manager перейдите в раздел "Безопасность>и администрирование>".Роли безопасности
  2. Щелкните роль правой кнопкой мыши и выберите команду "Копировать". Для копируемой роли уже назначены разрешения. Убедитесь, что вы используете только нужные разрешения.
  3. Укажите для роли пользователя имя и описание.
  4. Назначьте роли безопасности разрешения, описанные ниже.

Разрешения ролей безопасности

Имя роли: Средства запуска сценариев

  • Описание. Эти разрешения позволяют этой роли запускать только те сценарии, которые были ранее созданы и утверждены другими ролями.
  • Разрешения: Убедитесь, что для указанных ниже параметров установлено значение "Да".
Категория Разрешение Состояние
Collection Запустить сценарий Да
Site Чтение Да
Сценарии SMS Чтение Да

Имя роли: Авторы сценариев

  • Описание. Эти разрешения позволяют этой роли создавать сценарии, но не могут утверждать или запускать их.
  • Разрешения: Убедитесь, что установлены следующие разрешения.
Категория Разрешение Состояние
Collection Запустить сценарий Нет
Site Чтение Да
Сценарии SMS Create Да
Сценарии SMS Чтение Да
Сценарии SMS Удалить Да
Сценарии SMS Изменение Да

Имя роли: Утверждающие сценарии

  • Описание. Эти разрешения позволяют этой роли утверждать сценарии, но не могут создавать или запускать их.
  • Разрешения: Убедитесь, что установлены следующие разрешения.
Категория Разрешение Состояние
Collection Запустить сценарий Нет
Site Чтение Да
Сценарии SMS Чтение Да
Сценарии SMS Утвердить Да
Сценарии SMS Изменение Да

Пример разрешений сценариев SMS для роли авторов сценариев

Пример разрешений сценариев SMS для роли авторов сценариев

Поддержка папок для сценариев

Начиная с версии 2403, вы можете упорядочивать сценарии с помощью папок. Это изменение позволяет лучше классифицировать сценарии и управлять ими.

Открытие консоли Configuration Manager и переход в рабочую область "Библиотека программного обеспечения". На ленте или в контекстном меню в разделе "Сценарии" выберите один из следующих вариантов:

  • Создание папок
  • "Удалить папку"
  • Переименование папки
  • Перемещение папок
  • Настройка областей безопасности

Создание сценария

  1. В консоли Configuration Manager щелкните "Библиотека программного обеспечения".
  2. В рабочей области "Библиотека программного обеспечения " щелкните "Сценарии".
  3. На вкладке " Главная " в группе " Создать " нажмите кнопку "Создать сценарий".
  4. На странице "Сценарий " мастера " Создание сценария " настройте следующие параметры:
    • Имя сценария — введите имя сценария. Хотя можно создать несколько сценариев с одинаковыми именами, использование повторяющихся имен затрудняет поиск нужного сценария в консоли Configuration Manager.
    • Язык сценариев — в настоящее время поддерживаются только сценарии PowerShell.
    • Импорт — импорт сценария PowerShell в консоль. Сценарий отобразится в поле Сценарий .
    • Clear — удаляет текущий сценарий из поля Script.
    • Сценарий — отображает текущий импортированный сценарий. При необходимости вы можете отредактировать сценарий в этом поле.
  5. Завершите работу мастера. Новый сценарий отображается в списке сценариев со статусом Ожидает утверждения. Прежде чем вы сможете запустить этот сценарий на клиентских устройствах, необходимо утвердить его.

Важно!

Избегайте создания сценариев перезагрузки устройства или перезапуска агента Configuration Manager при использовании функции "Запуск сценариев". Это может привести к непрерывной перезагрузке. При необходимости доступны улучшения функции уведомлений клиентов, позволяющие перезапускать устройства. Столбец "Ожидание перезапуска" помогает определить устройства, которые нуждаются в перезапуске.

Параметры скрипта

Добавление параметров в сценарий обеспечивает повышенную гибкость для работы. Вы можете включить до 10 параметров. Ниже описываются текущие возможности функции «Запуск скриптов» с параметрами сценария для: Строковый и целочисленный типы данных. Также доступны списки предустановленных значений. Если сценарий содержит неподдерживаемые типы данных, вы получите предупреждение.

В диалоговом окне "Создание сценария " нажмите кнопку "Параметры сценария " в разделе "Сценарий".

Для каждого параметра сценария есть собственное диалоговое окно для добавления дополнительных сведений и проверки. Если в сценарии есть параметр по умолчанию, он будет перечислен в пользовательском интерфейсе параметров, и вы сможете его задать. Configuration Manager не перезапишет значение по умолчанию, так как он никогда не изменяет скрипт напрямую. Это можно представить в виде "предварительно заполненных предлагаемых значений", представленных в пользовательском интерфейсе, но Configuration Manager не предоставляет доступ к значениям "по умолчанию" во время выполнения. Это можно обойти, отредактировав сценарий, чтобы использовать правильные значения по умолчанию.

Важно!

Значения параметров не могут содержать одинарные кавычки.

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

Проверка параметров

Для каждого параметра в сценарии есть диалоговое окно "Свойства параметров сценария ", в котором можно добавить проверку этого параметра. После добавления проверки вы можете получить ошибки, если вводите значение параметра, не соответствующего проверке.

(пример: имя)

В этом примере можно задать свойства строкового параметра FirstName.

Параметры скрипта - строка

Раздел проверки диалогового окна "Свойства параметра сценария " содержит следующие поля для использования:

  • Minimum Length - минимальное количество символов поля FirstName .
  • Maximum Length — максимальное количество символов в поле FirstName
  • RegEx — сокращение от регулярного выражения. Дополнительные сведения об использовании регулярных выражений см. в следующем разделе " Проверка регулярных выражений".
  • Пользовательская ошибка — удобно для добавления собственных сообщений об ошибках, которые заменяют любые сообщения об ошибках проверки системы.

Проверка регулярного выражения

Регулярное выражение — это сжатая форма программирования для проверки строки символов на соответствие закодированной проверке. Например, можно провести проверку на предмет отсутствия прописных букв в поле "Имя", поместив [^A-Z] его в поле "Регулярное выражение".

Обработка регулярных выражений для этого диалогового окна поддерживается платформа .NET Framework. Рекомендации по использованию регулярных выражений см. в статье Регулярные выражения иязык регулярных выражений в .NET.

Примеры сценариев

Вот несколько примеров, иллюстрирующих сценарии, которые вы можете использовать с этой возможностью.

Создание новой папки и файла

Этот сценарий создает новую папку и файл в папке с учетом введенного вами имени.

Param(
[Parameter(Mandatory=$True)]
[string]$FolderName,
[Parameter(Mandatory=$True)]
[string]$FileName
)

New-Item $FolderName -type directory
New-Item $FileName -type file

Получить версию ОС

Этот сценарий использует WMI для запроса на компьютере версии ОС.

Write-Output (Get-WmiObject -Class Win32_operatingSystem).Caption

Изменение или копирование сценариев PowerShell

Вы можете редактировать или копировать существующий скрипт PowerShell, используемый с функцией запуска скриптов . Теперь вместо того, чтобы заново создавать сценарий, который необходимо изменить, теперь его нужно изменить напрямую. Оба действия используют те же возможности мастера, что и при создании нового сценария. При редактировании или копировании сценария Configuration Manager не сохраняет состояние утверждения.

Совет

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

Изменение сценария

  1. Перейдите в узел "Скрипты" в рабочей области "Библиотека программного обеспечения ".
  2. Выберите сценарий для редактирования и нажмите кнопку " Изменить " на ленте.
  3. Измените или повторно импортируйте сценарий на странице сведений о сценарии .
  4. Нажмите кнопку "Далее", чтобы просмотреть сводку, а по окончании редактирования закройте ее.

Копирование сценария

  1. Перейдите в узел "Скрипты" в рабочей области "Библиотека программного обеспечения ".
  2. Выберите сценарий, который нужно скопировать, и нажмите кнопку "Копировать " на ленте.
  3. Переименуйте сценарий в поле Имя скрипта и внесите необходимые дополнительные правки.
  4. Нажмите кнопку "Далее", чтобы просмотреть сводку, а по окончании редактирования закройте ее.

Запуск сценария

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

Чтобы выбрать коллекцию целей для сценария:

  1. В консоли Configuration Manager щелкните "Активы и соответствие".
  2. В рабочей области "Активы и соответствие" щелкните "Коллекции устройств".
  3. В списке "Коллекции устройств " выберите коллекцию устройств, на которых вы хотите запустить сценарий.
  4. Выберите нужную коллекцию и нажмите кнопку "Запустить скрипт".
  5. На странице " Сценарий " мастера запуска сценариев выберите сценарий из списка. Демонстрируются только утвержденные сценарии.
  6. Нажмите кнопку "Далее" и завершите работу мастера.

Важно!

Если сценарий не выполняется, например из-за выключения целевого устройства в течение одного часа, его необходимо запустить снова.

Планирование времени выполнения сценариев

Начиная с версии 2309 Current Branch Configuration Manager, вы можете планировать время выполнения сценариев в формате UTC.

Планирование выполнения сценария для коллекции:

  1. В консоли Configuration Manager щелкните "Активы и соответствие".

  2. В рабочей области "Активы и соответствие" щелкните "Коллекции устройств".

  3. В списке "Коллекции устройств " выберите коллекцию устройств, для которых нужно запланировать выполнение сценария.

  4. Выберите нужную коллекцию и нажмите кнопку "Запустить скрипт".

  5. На странице Scheduling установите флажок Schedule the script to be run at и укажите Schedule Time in UTC.

  6. Проверьте сведения, отображаемые на странице сводки.

  7. Нажмите кнопку "Далее" и завершите работу мастера.

    Скриншот сценария - расписание.

Примечание.

Максимум двадцать пять запланированных сценариев будут обрабатываться каждые 5 минут.

Выполнение целевого компьютера

Скрипт выполняется от имени учетной записи системы или компьютера на целевом клиенте (клиентах). У этой учетной записи ограничен доступ к сети. Любой доступ к удаленным системам и расположениям со стороны сценария должен быть подготовлен соответствующим образом.

Мониторинг сценариев

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

Монитор сценариев — состояние выполнения сценария

  1. В консоли Configuration Manager щелкните "Мониторинг".

  2. В рабочей области Мониторинг щелкните Состояние сценария.

  3. В списке "Состояние сценария " можно просмотреть результаты для каждого сценария, запущенного на клиентских устройствах. Код выхода сценария 0 обычно указывает на то, что сценарий успешно выполнен.

    Монитор сценариев — усеченный сценарий

Сценарий планирования Мониторинг коллекции

  1. В консоли Configuration Manager щелкните "Мониторинг".

  2. В рабочей области Мониторинг щелкните узел Запланированные сценарии.

  3. Новая строка отобразится в списке запланированных сценариев.

  4. Убедитесь, что новая строка отобразилась в списке запланированных сценариев. Столбец "Состояние" должен иметь значение "Запланировано". Столбец ClientOperationId должен быть пустым. Убедитесь, что другие столбцы, такие как "Имя сценария", "Расписание", "Время" и т. д., имеют соответствующие значения.

  5. После запланированного времени обновите узел "Запланированные сценарии ". Столбец состояния должен содержать значение "Успешно начата операция клиента". Столбец ClientOperationId должен иметь целочисленное значение.

  6. В рабочей области "Мониторинг" щелкните узел "Состояние сценария". Убедитесь, что в списке отображена новая строка и идентификатор ClientOperationId равен идентификатору ClientOperationId из узла "Запланированные сценарии ".

  7. Нажмите « Просмотреть состояние » и убедитесь, что вывод сценария отображается.

    Скриншот сценария — планирование мониторинга,

Вывод сценария

Возврат клиентского сценария с использованием форматирования JSON путем передачи результатов сценария в командлет ConvertTo-JSON . Формат JSON постоянно возвращает читаемые выходные данные сценария. Для сценариев, которые не возвращают объекты в качестве выходных данных, командлет ConvertTo-Json преобразует выходные данные в простую строку, которую клиент возвращает вместо JSON.

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

  • Избегайте возврата больших выходных данных сценариев, так как они усекаются до 4 КБ.

  • Преобразуйте объект перечисления в строковое значение в сценариях, чтобы они правильно отображались в формате JSON.

    Convert enum object to a sting-value

Вы можете просмотреть подробные выходные данные сценария в формате необработанного или структурированного JSON. Такое форматирование упрощает чтение и анализ выходных данных. Если скрипт возвращает допустимый текст в формате JSON или выходные данные можно преобразовать в JSON с помощью командлета PowerShell ConvertTo-JSON , просмотрите подробные выходные данные в виде вывода JSON или необработанных выходных данных. В противном случае единственным вариантом является Script Output.

Пример: выходные данные скрипта можно преобразовать в допустимый формат JSON

Команда: $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      16299  551

Пример: недопустимый JSON

Команда: Write-Output (Get-WmiObject -Class Win32_OperatingSystem).Caption

Microsoft Windows 10 Enterprise

Файлы журнала

  • На клиенте по умолчанию в C:\Windows\CCM\logs:

    • Scripts.log
    • CcmMessaging.log
  • На MP по умолчанию в C:\SMS_CCM\Logs:

    • MP_RelayMsgMgr.log
  • На сервере сайта по умолчанию в папке C:\Program Files\Configuration Manager\Logs:

    • SMS_Message_Processing_Engine.log

Автоматизация с помощью Windows PowerShell

Для автоматизации некоторых из этих задач можно использовать следующие командлеты PowerShell:

См. также