Групові політики Window дозволяють запускати різні файли скриптів при завантаженні / завершення роботи комп’ютера, вході / виході користувача. За допомогою GPO ви можете виконувати на комп’ютерах домену не тільки класичні файли скриптів (.bat, .cmd,, vbs), але і Startup / Shutdown / Logon / Logoff скрипти PowerShell (.ps1)

В сучасних операційних системах (Windows 10 / Windows Server 2016) ви можете налаштовувати запуск логон / логоф скриптів на PowerShell безпосередньо з редактора GPO.

До Windows 7 і Windows Server 2008 R2 можна було безпосередньо виконувати PowerShell файли з GPO (доводилося викликати ps1 файли з bat файлів в якості параметра виконуваного файлу powershell.exe).

Запустіть консоль управління доменними політиками – GPMC.msc (Group Policy Management Сonsole), створіть нову політику і призначте її на потрібний контейнер з користувачами або комп’ютерами (можна використовувати WMI фільтри GPO для більш тонкого націлювання політики). Перейдіть в режим редагування політики.

Ви повинні вибрати розділ GPO для запуску PowerShell скрипта в залежності від того, коли ви хочете виконати ваш скрипт.

  • Якщо PS скрипт повинен бути запущений при вході користувача на комп’ютер (настройка параметрів оточення користувача, програм, наприклад: ви хочете при вході користувача автоматичне створювати підпис в Outlook на основі даних з користувача AD, налаштувати параметри екранної заставки або стартового екрану) або при виході користувача , вам потрібно перейти в розділ GPO: Користувач Конфігурація -> Політика -> Windows Налаштування -> Сценарії (Увійти в аккаунт, залогінитися / Вихід);
  • Якщо ви хочете запускати скрипт PowerShell при завантаженні комп’ютера (відключення застарілих протоколів: NetBIOS, SMBv1, настройка параметрів безпеки комп’ютера і т.д.) або перед коректним завершенням роботи, вам потрібно перейти в секцію GPO з настройками комп’ютера: Конфігурація комп’ютера -> Політика -> Налаштування Windows -> Скрипти (Запуск / Вимкнення).

Запуск PowerShell скрипта при завантаженні комп’ютера за допомогою групової політики

Припустимо, нам потрібно запускати PowerShell скрипт при завантаженні Windows. Для цього потрібно вибрати Стартап і у вікні, перейди на вкладку PowerShell Сценарії.

Запус скриптів PowerShell при завантаженні комп'ютера груповими політиками

Тепер потрібно скопіювати файл з вашим PowerShell скриптом на контролер домену. Натисніть на кнопку Показати файли і перетягніть файл з PowerShell скриптом (розширення ps1) у вікно провідника (консоль автоматично відкриє каталог \yourdomainSysVolyourdomainPolicies{Здесь_GUID_вашей_GPO}MachineScriptsStartup вашої політики в каталозі SysVol на найближчому контролері домену).

копіювання скрипта powershell на sysvol

Оскільки ми налаштовуємо запуск Startup скрипта PowerShell, потрібно в дозволах ps1 файлу (або всього каталогу Machine Scripts Startup) перевірити NTFS права доступу на читання і виконання (Read & Execute) для групи Domain Computers.

ntfs дозволу на stratup скрипт powershell в sysvol для Domain Computers

Тепер потрібно натиснути кнопку Додати і додати скопійований файл скрипта ps1 в список запускаються політикою PowerShell скриптів.

запустити сценарій ps1 з GPO

Якщо ви запускаєте кілька PowerShell скриптів через GPO, ви можете управляти порядком з запуску за допомогою кнопок Up / Down.

Для коректного виконання скриптів PowerShell при завантаженні комп’ютера потрібно налаштувати час затримки перед запуском за допомогою політики в розділі Computer Configuration -> Administrative Templates -> System -> Group Policy. Увімкніть політику Налаштуйте Увійти в аккаунт, залогінитися Сценарій Затримка (Налаштувати затримку сценарію входу в систему) і вкажіть затримку в хвилинах перед запуском логон-скриптів (достатня для закінчення ініціалізації і завантаження всіх необхідних служб). Зазвичай достатньо поставити тут 1-2 хвилини.

політики затримки запуску powershell скриптів Configure Logon Script Delay

За замовчуванням в налаштуваннях безпеки Windows заборонений запуск PowerShell скриптів. Значення поточної настройки політики запуску сценаріїв PowerShell можна отримати командою Отримати-ВиконанняПолітика. Якщо політика не налаштована, команда поверне Restricted (блокуються будь-які скрипти). Параметри безпеки запуску PowerShell скриптом можна налаштувати через політику “Включити виконання сценаріїв” / “Поверніть Увімкнено Сценарій Виконання“(В розділі GPO Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell). Можливі значення політики:

  • Дозвольте тільки підписаний сценарії (AllSigned) – можна запускати тільки підписані скрипти PowerShell ( “Як підписати скрипт PowerShell?”)-Самий кращий сценарій з точки зору безпеки;
  • Дозвольте місцеві сценарії і віддалений підписаний сценарії (RemoteSigned) – можна запускати будь-які локальні і підписані віддалені скрипти;
  • Дозвольте всі сценарії (Unrestricted) – самий небезоапасний варіант, тому що дозволяє запуск будь-яких PowerShell скриптів.

політика запуску powershell скриптів Turn On Script Execution

Якщо вам не підходить жоден з запропонованих сценаріїв налаштування політики запуску PowerShell скриптів, ви можете запускати PowerShell скрипти в режимі Обхід (скрипти не блокують, попередження не з’являються).

Для цього PowerShell скрипт потрібно запускати з секції Startup -> Scripts. У цій секції ви можете налаштувати запуск ps1 сценарію за допомогою створення звичайного Startup скрипта, що запускає виконуваний файл powershell.exe (за аналогією зі сценарієм, описаним в статті). вкажіть:

  • Назва сценарію: %windir%System32WindowsPowerShellv1.0powershell.exe
  • Параметри сценарію: -Noninteractive -ExecutionPolicy Bypass –Noprofile -file %~dp0MyPSScript.ps1

powershell.exe -Неінтерактивний -ВиконанняПолітичний байпас

символи %~dp0 при запуску на клієнті автоматично перетворюються в UNC шлях до каталогу зі скриптом на SYSVOL.

В даному випадку ви примусово дозволили запуск будь-якого (навіть ненадійного) скрипта PowerShell за допомогою параметра Bypass.

Leave a Reply

Your email address will not be published. Required fields are marked *