Создание и выполнение сценариев 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
Запуск авторов и утверждающих скриптов
При выполнении скриптов используется концепция авторов скриптов и утверждающих скриптов в качестве отдельных ролей для реализации и выполнения скрипта. Разделение ролей автора и утверждающего позволяет проверить наличие мощного средства запуска скриптов. Существует дополнительная роль средств выполнения скриптов , которая позволяет выполнять скрипты, но не создавать или утверждать скрипты. См . статью Создание ролей безопасности для сценариев.
Управление ролями скриптов
По умолчанию пользователи не могут утвердить сценарий, который они создали. Так как скрипты являются мощными, универсальными и могут развертываться на многих устройствах, можно разделить роли между человеком, создающим скрипт, и пользователем, утверждающим скрипт. Эти роли предоставляют дополнительный уровень безопасности при выполнении скрипта без надзора. Вы можете отключить вторичное утверждение, чтобы упростить тестирование.
Утверждение или отклонение скрипта
Скрипты должны быть утверждены ролью утверждающего скрипта , прежде чем они могут быть запущены. Чтобы утвердить скрипт, выполните приведенные ниже действия.
- В консоли Configuration Manager щелкните Библиотека программного обеспечения.
- В рабочей области Библиотека программного обеспечения щелкните Скрипты.
- В списке Скрипт выберите сценарий, который требуется утвердить или отклонить, а затем на вкладке Главная в группе Скрипт нажмите кнопку Утвердить или отклонить.
- В диалоговом окне Утверждение или отклонение скрипта выберите Утвердить или Запретить для скрипта. При необходимости введите комментарий о своем решении. Если вы отклоните скрипт, его нельзя будет запустить на клиентских устройствах.
- Завершите работу мастера. В списке Скрипт столбец Состояние утверждения изменится в зависимости от выполняемого действия.
Разрешить пользователям утверждать собственные скрипты
Это утверждение в основном используется на этапе тестирования разработки скрипта.
- В консоли Configuration Manager щелкните Администрирование.
- В рабочей области Администрирование разверните узел Конфигурация сайта, а затем щелкните Сайты.
- В списке сайтов выберите свой сайт, а затем на вкладке Главная в группе Сайты щелкните Параметры иерархии.
- На вкладке Общие диалогового окна Свойства параметров иерархии снимите флажок Авторы скриптов требуют дополнительного утверждающего скрипта.
Важно!
Рекомендуется не разрешать автору скриптов утверждать собственные скрипты. Это должно быть разрешено только в параметре лаборатории. Внимательно изучите возможные последствия изменения этого параметра в рабочей среде.
Области безопасности
При выполнении скриптов используются области безопасности, существующая функция Configuration Manager, для управления написанием и выполнением скриптов путем назначения тегов, представляющих группы пользователей. Дополнительные сведения об использовании областей безопасности см. в разделе Настройка администрирования на основе ролей для Configuration Manager.
Создание ролей безопасности для сценариев
Три роли безопасности, используемые для выполнения скриптов, не создаются по умолчанию в Configuration Manager. Чтобы создать средства выполнения скриптов, авторы скриптов и роли утверждающих скриптов, выполните описанные действия.
- В консоли Configuration Manager перейдите в раздел Администрирование>ролей безопасности.>
- Щелкните роль правой кнопкой мыши и выберите команду Копировать. Копируемой роли уже назначены разрешения. Убедитесь, что вы принимаете только нужные разрешения.
- Присвойте настраиваемой роли имя и описание.
- Назначьте роли безопасности разрешения, описанные ниже.
Разрешения ролей безопасности
Имя роли: средства выполнения скриптов
- Описание. Эти разрешения позволяют этой роли выполнять только сценарии, ранее созданные и утвержденные другими ролями.
- Разрешения: Убедитесь, что для следующих элементов задано значение Да.
Категория | Разрешение | Состояние |
---|---|---|
Collection | Запустить сценарий | Да |
Site | Чтение | Да |
Скрипты SMS | Чтение | Да |
Имя роли: авторы скриптов
- Описание. Эти разрешения позволяют этой роли создавать скрипты, но они не могут утверждать или запускать их.
- Разрешения. Убедитесь, что заданы следующие разрешения.
Категория | Разрешение | Состояние |
---|---|---|
Collection | Запустить сценарий | Нет |
Site | Чтение | Да |
Скрипты SMS | Create | Да |
Скрипты SMS | Чтение | Да |
Скрипты SMS | Удалить | Да |
Скрипты SMS | Изменение | Да |
Имя роли: утверждающие скрипты
- Описание. Эти разрешения позволяют этой роли утверждать скрипты, но они не могут создавать или запускать их.
- Разрешения: Убедитесь, что заданы следующие разрешения.
Категория | Разрешение | Состояние |
---|---|---|
Collection | Запустить сценарий | Нет |
Site | Чтение | Да |
Скрипты SMS | Чтение | Да |
Скрипты SMS | Утвердить | Да |
Скрипты SMS | Изменение | Да |
Пример разрешений скриптов SMS для роли авторов скриптов
Поддержка папок для скриптов
Начиная с версии 2403, скрипты можно упорядочивать с помощью папок. Это изменение позволяет лучше классифицировать скрипты и управлять ими.
Откройте консоль Configuration Manager и перейдите в рабочую область Библиотека программного обеспечения. На ленте или в контекстном меню в разделе Скрипты выберите один из следующих параметров:
- Создание папок
- Удалить папку
- Переименовать папку
- Перемещение папок
- Настройка областей безопасности
Создание скрипта
- В консоли Configuration Manager щелкните Библиотека программного обеспечения.
- В рабочей области Библиотека программного обеспечения щелкните Скрипты.
- На вкладке Главная в группе Создать щелкните Создать скрипт.
- На странице Скрипт мастера создания скриптов настройте следующие параметры:
- Имя скрипта — введите имя скрипта. Хотя можно создать несколько скриптов с одинаковым именем, использование повторяющихся имен затрудняет поиск нужного скрипта в консоли Configuration Manager.
- Язык сценариев . В настоящее время поддерживаются только скрипты PowerShell.
- Импорт — импорт скрипта PowerShell в консоль. Скрипт отображается в поле Скрипт .
- Очистить — удаляет текущий скрипт из поля Скрипт.
- Скрипт — отображает импортированный скрипт. Скрипт в этом поле можно изменить при необходимости.
- Завершите работу мастера. Новый скрипт отображается в списке Скрипт с состоянием Ожидание утверждения. Перед запуском этого скрипта на клиентских устройствах необходимо утвердить его.
Важно!
Избегайте создания скриптов перезагрузки устройства или перезапуска агента Configuration Manager при использовании функции запуска скриптов. Это может привести к непрерывной перезагрузке. При необходимости существуют улучшения функции уведомлений клиента, которые позволяют перезапускать устройства. Столбец ожидающего перезапуска поможет определить устройства, которым требуется перезагрузка.
Параметры скрипта
Добавление параметров в скрипт обеспечивает более гибкую работу. Можно включить до 10 параметров. Ниже описана текущая возможность функции запуска скриптов с параметрами скрипта для. Строковые, целочисленные типы данных. Также доступны списки предустановленных значений. Если скрипт имеет неподдерживаемые типы данных, вы получите предупреждение.
В диалоговом окне Создание скрипта щелкните Параметры скрипта в разделе Скрипт.
Каждый из параметров скрипта имеет собственное диалоговое окно для добавления дополнительных сведений и проверки. Если в скрипте есть параметр по умолчанию, он будет перечислен в пользовательском интерфейсе параметра, и его можно задать. Configuration Manager не перезаписывает значение по умолчанию, так как никогда не изменяет скрипт напрямую. Это можно представить как "предварительно заполненные предлагаемые значения" в пользовательском интерфейсе, но Configuration Manager не предоставляет доступ к значениям по умолчанию во время выполнения. Это можно обойти, изменив скрипт, чтобы иметь правильные значения по умолчанию.
Важно!
Значения параметров не могут содержать одну кавычку.
Существует известная проблема, из-за которой значения параметров, которые включают или заключаются в одинарные кавычки, не передаются скрипту должным образом. При указании значений параметров по умолчанию, содержащих пробел в скрипте, используйте вместо этого двойные кавычки. При указании значений параметров по умолчанию во время создания или выполнения скрипта окружение значения по умолчанию в двойных или одиночных кавычках не требуется независимо от того, содержит ли значение пробел.
Проверка параметров
Каждый параметр в скрипте имеет диалоговое окно Свойства параметра скрипта , в которое можно добавить проверку для этого параметра. После добавления проверки вы должны получить ошибки, если вы вводите значение для параметра, которое не соответствует его проверке.
Пример : FirstName
В этом примере можно задать свойства строкового параметра FirstName.
Раздел проверки диалогового окна Свойства параметра скрипта содержит следующие поля для использования:
- Минимальная длина — минимальное количество символов поля FirstName .
- Максимальная длина — максимальное число символов поля FirstName
- RegEx — сокращение от регулярного выражения. Дополнительные сведения об использовании регулярных выражений см. в следующем разделе Использование проверки регулярных выражений.
- Пользовательская ошибка — полезно для добавления собственного пользовательского сообщения об ошибке, заменяющего любые сообщения об ошибках проверки системы.
Использование проверки регулярных выражений
Регулярное выражение — это компактная форма программирования для проверки строки символов на соответствие закодированной проверке. Например, можно проверить отсутствие заглавного алфавита в поле FirstName , поместив [^A-Z]
его в поле RegEx .
Обработка регулярных выражений для этого диалогового окна поддерживается платформой .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 не сохраняет состояние утверждения.
Совет
Не редактируйте скрипт, который активно выполняется на клиентах. Они не завершат выполнение исходного сценария, и вы не можете получить предполагаемые результаты от этих клиентов.
Изменение скрипта
- Перейдите в узел Скрипты в рабочей области Библиотека программного обеспечения .
- Выберите скрипт для редактирования, а затем нажмите кнопку Изменить на ленте.
- Измените или повторно вставьте скрипт на странице Сведения о скрипте .
- Нажмите кнопку Далее , чтобы просмотреть сводку , а затем закрыть после завершения редактирования.
Копирование скрипта
- Перейдите в узел Скрипты в рабочей области Библиотека программного обеспечения .
- Выберите скрипт для копирования и нажмите кнопку Копировать на ленте.
- Переименуйте скрипт в поле Имя скрипта и внесите дополнительные изменения, которые могут потребоваться.
- Нажмите кнопку Далее , чтобы просмотреть сводку , а затем закрыть после завершения редактирования.
Запуск сценария
После утверждения скрипта его можно запустить на одном устройстве или в коллекции. После начала выполнения скрипта он быстро запускается через систему с высоким приоритетом, которая истекает в течение одного часа. Затем результаты скрипта возвращаются с помощью системы сообщений о состоянии.
Чтобы выбрать коллекцию целевых объектов для скрипта, выполните приведенные ниже действия.
- В консоли Configuration Manager щелкните Активы и соответствие.
- В рабочей области Активы и соответствие щелкните Коллекции устройств.
- В списке Коллекции устройств щелкните коллекцию устройств, на которых требуется запустить скрипт.
- Выберите коллекцию по своему усмотрению и нажмите кнопку Запустить скрипт.
- На странице Скрипт мастера выполнения скриптов выберите скрипт из списка. Отображаются только утвержденные скрипты.
- Нажмите кнопку Далее, а затем завершите работу мастера.
Важно!
Если скрипт не выполняется, например из-за отключения целевого устройства в течение одного часа времени, его необходимо запустить еще раз.
Планирование среды выполнения скриптов
Начиная с Configuration Manager версии 2309, теперь можно запланировать среду выполнения скриптов в формате UTC.
Планирование выполнения скрипта в коллекции:
В консоли Configuration Manager щелкните Активы и соответствие.
В рабочей области Активы и соответствие щелкните Коллекции устройств.
В списке Коллекции устройств щелкните коллекцию устройств, на которых вы хотите запланировать выполнение сценария.
Выберите коллекцию по своему усмотрению и нажмите кнопку Запустить скрипт.
На странице Планирование установите флажок Запланировать выполнение скрипта и укажите время расписания в формате UTC.
Проверьте сведения, отображаемые на странице сводки.
Нажмите кнопку Далее, а затем завершите работу мастера.
Примечание.
Не более двадцати пяти запланированных скриптов будут выполняться каждые 5 минут.
Выполнение целевого компьютера
Скрипт выполняется как учетная запись системы или компьютера на целевых клиентах. Эта учетная запись имеет ограниченный сетевой доступ. Любой доступ к удаленным системам и расположениям со стороны скрипта должен быть подготовлен соответствующим образом.
Мониторинг скриптов
После запуска скрипта на коллекции устройств используйте следующую процедуру для мониторинга операции. Вы можете отслеживать скрипт в режиме реального времени по мере его выполнения, а затем вернуться к состоянию и результатам выполнения заданного скрипта выполнения. Данные о состоянии скрипта очищаются в рамках задачи обслуживания Удаления устаревших операций клиента или удаления скрипта.
В консоли Configuration Manager щелкните Мониторинг.
В рабочей области Мониторинг щелкните Состояние скрипта.
В списке Состояние скрипта отображаются результаты для каждого скрипта, запущенного на клиентских устройствах. Код выхода скрипта 0 , как правило, указывает, что скрипт успешно выполнен.
Планирование мониторинга скриптов в коллекции
В консоли Configuration Manager щелкните Мониторинг.
В рабочей области Мониторинг щелкните узел Запланированные скрипты.
В списке запланированных скриптов появится новая строка.
Убедитесь, что в списке запланированных скриптов отображается новая строка. Столбец состояния должен иметь значение Scheduled. Столбец ClientOperationId должен быть пустым. Убедитесь, что другие столбцы, такие как имя скрипта, время расписания и т. д., имеют соответствующие значения.
После времени расписания обновите узел Запланированные скрипты . Столбец состояния должен иметь значение Успешно инициированная клиентом операция. Столбец ClientOperationId должен иметь целочисленное значение.
В рабочей области Мониторинг щелкните узел Состояние скрипта. Убедитесь, что в списке отображается новая строка, а значение ClientOperationId равно ClientOperationId из узла Запланированные скрипты .
Щелкните Просмотреть состояние и убедитесь, что отображаются выходные данные скрипта.
Выходные данные скрипта
Вывод возвращаемого скрипта клиента с помощью форматирования JSON путем отправки результатов скрипта в командлет ConvertTo-Json . Формат JSON последовательно возвращает доступные для чтения выходные данные скрипта. Для сценариев, которые не возвращают объекты в качестве выходных данных, командлет ConvertTo-Json преобразует выходные данные в простую строку, возвращаемую клиентом вместо JSON.
Скрипты, которые получают неизвестный результат или где клиент находится в автономном режиме, не будут отображаться на диаграммах или в наборе данных.
Избегайте возврата больших выходных данных скрипта, так как они усечены до 4 КБ.
Преобразуйте объект перечисления в строковое значение в скриптах, чтобы они правильно отображались в формате JSON.
Подробные выходные данные скрипта можно просмотреть в необработанном или структурированном формате JSON. Это форматирование упрощает чтение и анализ выходных данных. Если скрипт возвращает допустимый текст в формате JSON или выходные данные могут быть преобразованы в JSON с помощью командлета PowerShell ConvertTo-Json , то подробные выходные данные отображаются как выходные данные JSON или Необработанные выходные данные. В противном случае единственным вариантом является вывод скрипта.
Пример. Выходные данные скрипта можно преобразовать в допустимый 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:
- Approve-CMScript
- Deny-CMScript
- Get-CMScript
- Invoke-CMScript
- New-CMScript
- Remove-CMScript
- Set-CMScript