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

Применимо к: Configuration Manager (current branch)

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

Примечание

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

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

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

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

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

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

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

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

Ограничения

Run Scripts в настоящее время поддерживает:

  • Языки скриптов: PowerShell
  • Типы параметров: integer, string и list.

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

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

Запуск авторов и авторов сценариев

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

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

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

Утверждение или отказ скрипта

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

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

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

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

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

Важно!

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

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

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

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

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

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

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

Имя роли: Бегуны сценариев

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

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

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

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

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

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

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

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

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

Важно!

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

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

Добавление параметров в скрипт обеспечивает повышенную гибкость для работы. Можно включить до 10 параметров. Ниже описаны текущие возможности функции Run Scripts с параметрами скрипта для; Типы данных String, Integer. Также доступны списки заранее. Если в сценарии есть неподтверченные типы данных, вы получите предупреждение.

В диалоговом окантове Create Script щелкните Параметры скрипта в скрипте.

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

Важно!

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

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

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

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

Пример: FirstName

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

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

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

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

Использование проверки регулярных выражений

Обычное выражение — это компактная форма программирования для проверки строки символов в отношении кодированной проверки. Например, можно проверить отсутствие алфавитного символа капитала в поле FirstName, разместив в [^A-Z] поле RegEx.

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

Примеры скриптов

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

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

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

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, используемый с помощью функции Сценарии запуска. Вместо того, чтобы воссоздать сценарий, который необходимо изменить, теперь непосредственно изменить его. В обоих действиях используется тот же мастер, что и при создании нового сценария. При редактировании или копировании скрипта диспетчер конфигурации не сохраняет состояние утверждения.

Совет

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

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

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

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

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

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

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

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

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

Важно!

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

Целевое выполнение машины

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

Мониторинг скриптов

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

Монитор скрипта — состояние запуска скрипта

  1. В консоли Configuration Manager нажмите кнопку Мониторинг.

  2. В рабочей области Мониторинга нажмите кнопку Состояние скрипта.

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

    Монитор скрипта — усеченный скрипт

Выход скрипта

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

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

  • Не возвращая большой выход скрипта, так как он усечен до 4 КБ.

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

    Преобразование объекта enum в жалевую

Подробный выход скрипта можно просмотреть в формате JSON или в формате JSON. Такое форматирование упрощает чтение и анализ выходных данных. Если сценарий возвращает допустимый текст в формате JSON или вывод может быть преобразован в JSON с помощью cmdlet ConvertTo-Json PowerShell, затем просмотреть подробный вывод как JSON Output или Raw 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

Чтобы автоматизировать некоторые из этих задач, можно использовать следующие cmdlets PowerShell:

См. также