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


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

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

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

Тут обязательно нужно заполнить поля:
- Script name — Я укажу в качестве имени Disable_NTLMv1. Старайтесь задавать понятные для себя имена
- Script Description — Описание, оно не обязательно, но старайтесь его заполнять, например указать номер заявки или детали
- Script language — PowerShell
- Script timiout seconds — Я задаю 60 секунд
Далее можно вставить в пустое поле текст самого скрипта PowerShell, но мне проще его импортировать, чтобы ничего лишнего не скопировать или не повредить текст при копировании. Нажмите кнопку «Import«.

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

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

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

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

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

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

Еще раз «Next«.

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

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

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

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

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

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

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

На этом можно считать, что скрипт успешно применен. Теперь я думаю вы легко будите раскатывать необходимые скрипты на нужные группы серверов или рабочих станций. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.
Популярные Похожие записи:
Как запустить скрипт PowerShell в Windows- Как узнать, нуждается ли удаленный сервер в перезагрузке
- Автоматическое удаления файлов в папке по заданным критериям
Ошибка The number of connections to this computer is limited
Как убрать надпись Активация Windows, за минуту- Как вручную изменить сервер администрирования Kaspersky в агенте
Как создать и запустить сценарий PowerShell в Windows 10 – инструкция по шагам
Windows 10 PowerShell – это средство командной строки, которое позволяет выполнять команды и сценарии для изменения параметров системы и автоматизации задач. Это похоже на командную строку, но PowerShell является более эффективным интерфейсом командной строки (CLI), который предоставляет широкий набор инструментов и обеспечивает большую гибкость и контроль (особенно для сценариев).
Скрипт – это просто набор команд, сохраненных в текстовый файл (с расширением .ps1), которые PowerShell может понять и выполнить в заданной последовательности. Единственное предупреждение заключается в том, что в отличие от командной строки, протокол безопасности по умолчанию предотвращает выполнение всех сценариев.
Это означает, что при двойном щелчке .ps1 файла в системе Windows 10 ничего не произойдёт, и если вы пытаетесь выполнить скрипт в PowerShell, вы получите сообщение об ошибке: «не может быть загружен, потому что запрещено выполнение сценариев в этой системе». Тем не менее, запускать сценарии на вашем устройстве довольно просто. Вам просто нужно включить правильную политику выполнения.

В этой версии урока по Windows 10 мы проведём вас шаг за шагом, чтобы вы смогли успешно запустить свой первый скрипт в PowerShell.
Создание файла сценария PowerShell
В Windows 10 файлы сценариев PowerShell можно создавать с помощью практически любого текстового редактора или консоли интегрированной среды сценариев (ISE).
Создание скрипта с помощью блокнота
Чтобы создать сценарий PowerShell с помощью блокнота, выполните следующие действия:

- Откройте приложение «Блокнот».
- Создайте или вставьте сценарий. Например: Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»» Вышеприведенный скрипт просто выводит на экране фразу «Поздравляем! Ваш первый скрипт успешно выполнен».
- Сохраните файл под любым удобным названием, например, first_script.ps1
Создание сценария с помощью интегрированной среды сценариев
Кроме того, консоль PowerShell ISE можно использовать для кодирования сценариев в Windows 10. Интегрированная cреда сценариев является сложным инструментом, но вы можете начать работу с помощью этих шагов:
- Откройте системный поиск и введите запрос Windows PowerShell ISE, щелкните правой кнопкой мыши верхний результат, и выберите Запуск от имени администратора или выберите соответствующий параметр в правой колонке.

- В PowerShell ISE создайте пустой файл .ps1, в котором можно создать или вставить скрипт. Например: Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»

- Откройте меню Файл и нажмите кнопку Сохранить .
- Введите название сценария. Например, first_script_ise.ps1
- Сохраните скрипт.
Как только Вы выполнили эти шаги с помощью Блокнота или PowerShell ISE, сценарий готов к запуску, но он не будет выполнен. Это происходит потому, что параметры PowerShell по умолчанию всегда настроены на блокирование выполнения любого сценария.
Запуск файла сценария PowerShell
Чтобы запустить файл сценария в PowerShell, необходимо изменить политику выполнения, выполнив следующие действия:
- Откройте поиск и введите PowerShell, щелкните правой кнопкой мыши в верхний результат и выберите Запуск от имени администратора.
- Введите следующую команду, чтобы разрешить выполнение скриптов и нажмите клавишу Enter : Set-ExecutionPolicy RemoteSigned
- Укажите тип А и ещё раз нажмите клавишу Enter .

- Введите следующую команду для запуска скрипта и нажмите клавишу Enter : & «C:\PATH\to\SCRIPT\first_script.ps1»
В приведенной выше команде обязательно измените PATH\to\SCRIPT на расположение вашего скрипта.
После выполнения этих шагов сценарий будет запущен, и если он был создан правильно, вы должны увидеть его вывод без проблем.
PowerShell в Windows 10 включает четыре политики выполнения:
- Restricted – останавливает выполнение скрипта.
- RemoteSigned – запускает скрипты, созданные на устройстве. Однако, сценарии, созданные на другом компьютере, не будут запускаться, если они не содержат подписи доверенного издателя.
- AllSigned – все скрипты будут работать до тех пор, пока они подписаны надежным издателем.
- Unrestricted запускает любой скрипт без каких-либо ограничений.
В приведенных выше шагах мы использовали команду, чтобы разрешить запуск локальных скриптов в Windows 10. Однако, если вы не планируете регулярно выполнять скрипты, можно восстановить настройки по умолчанию, используя те же инструкции, но на Шаге 4, обязательно используйте Set-ExecutionPolicy Restricted команду.
Как работать с командной строкой и аргументами командной строки в Python
Узнайте, как работать с командной строкой и аргументами командной строки в Python для создания мощных скриптов и утилит.
Алексей Кодов
Автор статьи
10 июля 2023 в 17:48
В этой статье мы рассмотрим, как работать с командной строкой и аргументами командной строки в Python. Этот навык полезен для создания скриптов, которые могут быть запущены из командной строки с различными параметрами.
Работа с командной строкой
Для начала рассмотрим, как запустить Python-скрипт из командной строки.
- Откройте терминал или командную строку на вашем компьютере.
- Перейдите в каталог, где находится ваш Python-скрипт.
- Запустите скрипт, набрав python имя_файла.py .
python my_script.py
Аргументы командной строки
Аргументы командной строки передаются Python-скрипту в виде списка. Для работы с этим списком вам потребуется модуль sys .
Использование модуля sys
Импортируйте модуль sys и получите список аргументов командной строки с помощью sys.argv . Вот пример:
import sys print("Аргументы командной строки:", sys.argv)
Если вы сохраните данный код в файле arguments.py и запустите его из командной строки с аргументами, вы увидите следующее:
python arguments.py arg1 arg2 arg3
Аргументы командной строки: ['arguments.py', 'arg1', 'arg2', 'arg3']
Обратите внимание, что первый элемент списка sys.argv — это имя самого скрипта.
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

Обработка аргументов командной строки
Теперь, когда вы знаете, как получить аргументы командной строки, вы можете обрабатывать их в своем скрипте. Рассмотрим пример:
import sys # Проверяем количество аргументов if len(sys.argv) < 2: print("Ошибка: необходимо указать хотя бы один аргумент") sys.exit(1) # Выводим аргументы командной строки, начиная со второго элемента списка for arg in sys.argv[1:]: print("Аргумент:", arg)
Если вы запустите данный скрипт с аргументами, вы увидите следующее:
python process_arguments.py input.txt output.txt
Аргумент: input.txt Аргумент: output.txt
Поздравляем! Теперь вы знаете, как работать с командной строкой и аргументами командной строки в Python. Эти навыки пригодятся вам при создании утилит и скриптов для автоматизации повседневных задач.
Как автоматизировать сложные штуки на компьютере
Когда мы говорили про автоматизацию в компьютере, то основная идея была такая: мы один раз учим компьютер делать что-то важное для нас, а дальше компьютер делает это сам в нужный момент.
Сегодня поговорим про первую часть — как с помощью встроенных скриптов научить компьютер делать то, что нам нужно.
Принципиальное решение
Мы попробуем заставить компьютер выполнять полезную работу без непосредственного участия пользователя: чтобы не нужно было двигать мышкой и нажимать на экранные кнопки.
Сделать это можно двумя принципиальными способами:
- Использовать программу, которая будет за нас двигать мышкой и нажимать клавиши — такие программы есть, но они не слишком стабильные
- Использовать служебные программы и скриптование — мы пойдём по этому пути
Что за служебные программы?
Мы привыкли, что программа в компьютере — это что-то, у чего есть окно, кнопки, пункты меню и т. д. И это имеет смысл, например, в графических или текстовых редакторах, когда экран необходим.
Но многие программы могут работать без графического интерфейса. Например, если вам нужно скопировать файл из одного места в другое, вам не обязательно смотреть в экран с папочками. Можно написать «откуда» и «куда», и программа должна всё выполнить. Или если мы написали программу на Python, которая обрабатывает большие данные, ей не обязательно выводить данные на экран. Из файла взяла — обработала — в файл положила.
Программы, которые могут работать без графического интерфейса, мы будем называть служебными. В чём их свойства:
- Они запускаются из командной строки или из терминала.
- У них может не быть графического интерфейса.
- Чтобы объяснить им, что от программ нужно, используют параметры.
- Параметры пишутся текстом при запуске программы.
- Программа однажды получает параметры, исполняется и выходит. То есть можно один раз сказать, что программе делать, нажать энтер и уйти пить кофе — дальше программа справится сама.
Недавно мы разбирали программу rsync, которая позволяет сделать бэкап важных данных, скопировав их на флешку или другой диск. С помощью параметров можно настроить миллион нюансов работы: что копировать, куда, на какой скорости, что делать с конфликтующими файлами, как сравнивать файлы и т. д. И всё это можно сделать в командной строке, без графического интерфейса.
Другой пример — программа chkdsk для Windows, которая может проверять флешки и жёсткие диски и исправлять ошибки на них. Эту программу можно запустить из консоли, указав параметры — что проверить и как:

Когда нужны служебные программы
На вашем компьютере большая часть служебных программ отвечает за обслуживание самого компьютера — ремонт файлов, запуск скрытых служб и подобные вещи. Всё потому, что персональные компьютеры заточены на взаимодействие с пользователем и решение визуальных и бытовых дел. На домашних компьютерах чаще открыт Word, чем сервер баз данных.
А вот на серверах ситуация обратная: там не используют пользовательские приложения, но зато там всё напичкано служебными программами — веб-серверами, серверами баз данных, сетевыми службами, средствами защиты и балансировки нагрузки, менеджерами памяти и виртуализации. У них нет графического интерфейса, они все запускаются из командной строки.
Поэтому серверами можно спокойно управлять из командной строки, подключившись к терминалу: чтобы запустить на Linux-сервере базу данных, тебе достаточно сказать команду sudo /etc/init.d/mysqld start — и где-то в глубинах сервера зашуршат нужные файлы. Не нужно заходить в меню «Программы», искать там приложение MySQL, запускать его и что-то с ним делать. Одна текстовая команда делает то, что на домашнем компьютере мы бы делали двадцатью кликами мышки.
Когда-то давно мы рассказывали про приложение MAMP — это пакет для разработки сайтов на собственном компьютере. Так вот, MAMP — это лишь простая графическая обёртка для нескольких служебных программ: веб-серверов и баз данных. Когда вы нажимаете кнопку «Запустить сервер», где-то на фоне запускаются служебные программы серверов и баз данных: вы их не видите, но они висят в памяти и делают свою полезную работу. А MAMP просто даёт вам кнопку «Вкл».
Автоматизируем служебные программы через скрипт
Итак, что мы знаем:
- У компьютера есть большой набор служебных программ.
- Их можно вызвать одной строкой, и они сделают нам свою полезную работу по нажатии клавиши Enter.
- Возить мышкой и вступать с компьютером в диалог при этом не нужно.
- Одна команда в командной строке запустит одну программу, которая сделает своё дело и закроется, снова вернув нас в командную строку.
Логичный следующий шаг — автоматизировать исполнение этих команд и программ с помощью скрипта.
Скрипт — это набор команд для компьютера, которые записали и сохранили в один файл. Можно представить, что это сценарий фильма или пьеса, по которой актёры играют на сцене. Чтобы компьютер понял, что перед ним именно скрипт, используют специальные расширения. В Windows это будут расширения .bat или .ps1.
Например, нам нужно раз в неделю копировать три разные папки в одну с текущей датой. Можно написать такой скрипт и сохранить его как backup.bat :
set sFolderName=%date% (%time:~0,-3%) md "%sFolderName::=-%" md f:\"%sFolderName::=-%"\Documents md f:\"%sFolderName::=-%"\Music md f:\"%sFolderName::=-%"\Images copy C:\Users\Mike\Documents F:\"%sFolderName::=-%"\Documents copy C:\Users\Mike\Work F:\"%sFolderName::=-%"\Work copy C:\Users\Mike\Projects F:\"%sFolderName::=-%"\Projects
Тут используются программы Windows: md — «создание каталога» и copy — «копирование файла». Также используется команда set , которая задаёт переменную для выполнения скрипта. В переменной лежит текущая дата и время.
Теперь достаточно дважды щёлкнуть в проводнике по файлу скрипта или запустить скрипт из командной строки. Компьютер поймёт, что ему нужно исполнить инструкции из скрипта, и всё сделает.
В MacOS и Linux скрипты работают точно так же, только возможностей у скриптов в этих системах намного больше. Дело в том, что Windows изначально была заточена под окна и работу с мышкой, чтобы пользователю не пришлось разбираться со скриптами. А в Linux всё наоборот — там проще всё сделать парой скриптов, чем ставить много программ и долго всё настраивать мышкой.
В следующей статье напишем настоящие скрипты для автоматизации и разберёмся, как они работают. Подпишитесь, чтобы не пропустить.