Как запустить скрипт PowerShell на удаленном компьютере через SCCM

Обновлено 18.11.2023

Powershell SCCM

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами восстановили правильное кириллическое название у отображения службы. Идем далее и сегодня я хочу вам показать, как вы можете запустить скрипт PowerShell на удаленном компьютере с помощью агента System Center Configuration Manager. Постараюсь вам привести несколько примеров из практики, когда это может быть полезным, да и в целом очень полезно знать, о наличии такого функционала.

Пример, когда требуется уметь запускать PowerShell скрипт с помощью SCCM

System Center Configuration Manager - это огромный комбайн с помощью которого вы можете выполнять с системами на базе Windows и Windows сервер все что угодно. Я слабо себе представляю крупные компании у которых бы его не было. Например, благодаря ему можно легко управлять автоматической установкой обновлений Windows по расписанию и самое главное иметь возможность, на 100% запретить перезагрузку сервера на нужное время, так как в Windows Server 2019 и выше, этого сделать с помощью групповой политики уже нельзя.

Рабочий пример, появилась задача по отключению NTLM v1 во всем Active Directory. Была для этого создана групповая политика, но на некоторых рабочих станциях GPO не отработала, я показывал как искать причину и исправлять ее. Но пока идет разбирательство можно применить нужные настройки правкой реестра Windows через PowerShell. Самый правильный метод для массового выполнения, это использовать функционал System Center Configuration Manager. Давайте поэтапно пройдем этот путь.

Создание и настройка скрипта в System Center Configuration Manager

  • 1️⃣Первым делом вам нужно подготовить сам PowerShell скрипт и сохранить его для импортирования на определенном шаге в SCCM. В качестве моего рабочего примера я буду выполнять вот такой скрипт:

# Задаем путь к ключу реестра
$registryPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa"

# Задаем имя и значение ключа
$registryName = "lmcompatibilitylevel"
$registryValue = 5

# Проверяем наличие ключа в реестре
if (Test-Path $registryPath) {
# Если ключ уже существует, удаляем его
Remove-ItemProperty -Path $registryPath -Name $registryName -ErrorAction SilentlyContinue
}

# Создаем новый ключ с заданным значением
New-ItemProperty -Path $registryPath -Name $registryName -Value $registryValue -PropertyType DWORD -Force

Сохраним его в виде ps1 файла на сервере SCCM.

Файл скрипта PowerShell для SCCM

  • 2️⃣Вторым шагом нам нужно импортировать данный скрипт в репозиторий SCCM. Для этого подключаемся к серверу используя клиента System Center Configuration Manager. Переходим в раздел "Software Library - Scripts".

SCCM раздел Scripts

Щелкаем там правым кликом и выбираем пункт "Create Scripts".

Создание скрипта в SCCM

Тут обязательно нужно заполнить поля:

  1. Script name - Я укажу в качестве имени Disable_NTLMv1. Старайтесь задавать понятные для себя имена
  2. Script  Description - Описание, оно не обязательно, но старайтесь его заполнять, например указать номер заявки или детали
  3. Script language - PowerShell
  4. Script timiout seconds - Я задаю 60 секунд

Далее можно вставить в пустое поле текст самого скрипта PowerShell, но мне проще его импортировать, чтобы ничего лишнего не скопировать или не повредить текст при копировании. Нажмите кнопку "Import".

Импорт скрипта PowerShell в SCCM

Указываем на ваш заранее созданный файл ps1.

Выбор powershell файла для импорта в SCCM

Обратите внимание, что его содержимое прописалось в поле "Scripts". Нажимаем кнопку "Next".

Успешный импорт скрипта PowerShell

Далее нажимаем кнопку "Next".

Детали импортируемого скрипта PowerShell в SCCM

Дожидаемся, когда мастер импорта подтвердит, что все успешно выполнено.

Успешный импорт PowerShell скрипта

  • 3️⃣Следующим шагом вам нужно подтвердить, что данный скрипт валидный и вы готовы его добавить для использования. Об этом говорит состояние "Approved". Нажмите кнопку "Approved/Deny".

Подтверждение импортированного скрипта в SCCM

Выбираем пункт "Approve" и нажимаем "Next".

Approve скрипт Powershell в SCCM

Еще раз "Next".

Подтверждаем утверждение скрипта

Завершаем в мастере подтверждение скрипта.

Завершение утверждения скрипта в SCCM

Видим, что статус у скрипта стал "Approved".

Список утвержденных скриптов в SCCM

Запуск скрипта из SCCM

Теперь остается применить наш скрипт. Для этого идем в раздел "Assets and Compliance - Devices". Находим нужный компьютер или компьютеры, кликаем по ним правой кнопкой мыши и выбираем пункт "Run Scripts".

Run Scripts SCCM

Выбираем нужный крипт из списка и нажимаем "Next".

Выбор устанавливаемого скрипта в SCCM

Нажимаем кнопку "Next".

Подтверждение выполняемого скрипта в SCCM

Будет создано задание на удаленное применение скрипта PowerShell.

Создание задания по установка скрипта на удаленном компьютере через sccm

Об успешности выполнения скрипта будет говорить статус "1" и "Exit code 0".

Успешное выполнение скрипта в SCCM

На этом можно считать, что скрипт успешно применен. Теперь я думаю вы легко будите раскатывать необходимые скрипты на нужные группы серверов или рабочих станций. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *