Запуск bat через gpo

Групповые политики Window позволяют запускать различные файлы скриптов при загрузке/ завершении работы компьютера, входе/выходе пользователя. С помощью GPO вы

Запуск PowerShell скрипта при загрузке компьютера с помощью групповой политики

Допустим, нам нужно запускать PowerShell скрипт при загрузке Windows. Для этого нужно выбрать Startup и в открывшемся окне перейди на вкладку PowerShell Scripts.

GPO-Startup-PowerShell-Scripts.jpg

Теперь нужно скопировать файл с вашим PowerShell скриптом на контроллер домена. Нажмите на кнопку Show Files и перетяните файл с PowerShell скриптом (расширение ps1) в открывшееся окно проводника (консоль автоматически откроет каталог yourdomainSysVolyourdomainPolicies<Здесь_GUID_вашей_GPO>MachineScriptsStartup вашей политики в каталоге SysVol на ближайшем контроллере домена).

copy-ps-to-sysvol.jpg

Т.к. мы настраиваем запуск Startup скрипта PowerShell, нужно в разрешениях ps1 файла (или всего каталога MachineScriptsStartup) проверить NTFS права доступа на чтение и выполнение (Read & Execute) для группы Domain Computers .

powershell-script-ntfs-razresheniya.jpg

Теперь нужно нажать кнопку Add и добавить скопированный файл скрипта ps1 в список запускаемых политикой PowerShell скриптов.

run-posh-script-gpo.jpg

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

Для корректного выполнения скриптов PowerShell при загрузке компьютера нужно настроить время задержки перед запуском с помощью политики в разделе Computer Configuration -> Administrative Templates -> System -> Group Policy. Включите политику Configure Logon Script Delay (Настроить задержку сценария входа в систему) и укажите задержку в минутах перед запуском логон-скриптов (достаточное для окончании инициализациии и загрузки всех необходимых служб). Обычно достаточно поставить здесь 1-2 минуты.

По умолчанию в настройках безопасности Windows запрещен запуск PowerShell скриптов. Значение текущей настройки политики запуска сценариев PowerShell можно получить командой Get-ExecutionPolicy. Если политика не настроена, команда вернет Restricted (блокируются любые скрипты). Параметры безопасности запуска PowerShell скриптом можно настроить через политику “Включить выполнение сценариев” / “Turn On Script Execution” (в разделе GPO Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell). Возможные значения политики:

  • Allowonlysignedscripts (AllSigned)– можно запускать только подписанные скрипты PowerShell (“Как подписать скрипт PowerShell?”) –самый лучший сценарий с точки зрения безопасности;
  • Allowlocalscriptsandremotesignedscripts (RemoteSigned)– можно запускать любые локальные и подписанные удаленные скрипты ;
  • Allowallscripts (unrestricted) – самый небезоапасный вариант, т.к. разрешает запуск любых PowerShell скриптов.

politika-Turn-On-powershell-Script-Execution.jpg

Если вам не подходит не один из предложенных сценариев настройки политики запуска PowerShell скриптов, вы можете запускать PowerShell скрипты в режиме Bypass (скрипты не блокируются, предупреждения не появляются).

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

  • Script name: %windir%System32WindowsPowerShellv1.0powershell.exe
  • Script Parameters: -Noninteractive -ExecutionPolicy Bypass –Noprofile -file %

powershell-Noninteractive-ExecutionPolicy-Bypass.jpg

dp0 при запуске на клиенте автоматически преобразуются в UNC путь до каталога со скриптом на SYSVOL.

В данном случае вы принудительно разрешили запуск любого (даже ненадежного) скрипта PowerShell с помощью параметра Bypass.

В данной статье речь пойдет о такой программе как Bginfo и о том как настроить её работу в домене через групповые политики. Программа Bginfo позволяет вывести на экран всю необходимую информация от IP адреса компьютера до имени пользователя. Это очень удобно когда подобная информация доступна сразу и не нужно лесть в различные настройки. В свое время когда мне понадобилась подобная информация я в интернете не нашел подробной инструкции по этому вспомнив об этом решил сам написать. Настраивать её мы будем в Windows Serevre 2016.

Интересные статьи по теме:

Как настроить Bginfo в домене через GPO

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

1-3.png

Если вас все устраивает сохраняем настройки через File — Save as.

2-3.png

Вводим имя config место выбираем тоже где лежит сама программа.

3-2.png

Теперь нужно создать bat файл для запуска программы через GPO. Открываем любой текстовый документ и прописываем следующие строки после чего сохранаем его в туже папку с программой с любым именем например bginfo.

Кстати не забудьте расшарить папку с программой и сохраненным config.

192.168.199.202BginfoBginfo — Это расположение расшаренной папки с программой в сети.

192.168.199.202BginfoBginfocongig.bgi — Это расположение файла с настройками который сделали раньше.

4-2.png

Теперь на нужно создать политику заходим в управление кликаем правой кнопкой на вашем домене и создаем новый объект. Дадим имя BG.

5-3.png

Теперь кликаем правой кнопкой на созданном объекте BG и кликаем изменить. В открывшемся окне слева едем по такому пути Конфигурация пользователя — Конфигурация Windows — Сценарии. Справа на пункте вход кликаем правой кнопкой и заходим в свойства.

6-1.png

В данном окне через кнопку добавить выбираем наш bat файл.

7.png

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

Скачать Bginfo — https://docs.microsoft.com/en-us/sysinternals/downloads/bginfo

среда, 9 сентября 2015 г.

GPO AD: Computer Startup scripts and Powershell (часть 1: Создание.Запуск)

2015-09-09%2B18-20-56%2Bgpo%2Bpowershell%2B%2B2%2B%25D1%2582%25D1%258B%25D1%2581%2B%25D0%25B8%25D0%25B7%25D0%25BE%25D0%25B1%25D1%2580%25D0%25B0%25D0%25B6%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B9%2B%25D0%25BD%25D0%25B0%25D0%25B9%25D0%25B4%25D0%25B5%25D0%25BD%25D0%25BE%2B%25D0%25B2%2B%25D0%25AF%25D0%25BD%25D0%25B4%25D0%25B5%25D0%25BA%25D1%2581.%25D0%259A%25D0%25B0%25D1%2580%25D1%2582%25D0%25B8%25D0%25BD%25D0%25BA%25D0%25B0%25D1%2585%2B-%2BGoogle%2BChrome.pngНе так часто мне удавалось видеть рабочую конфигурацию «Сценария запуска для компьютера» и уж тем более не доводилось реализовать. Но вот возникла необходимость. И казалось-бы у Miscrosoft в редакторе GPO имеются для этого комфортные средства. Бери и делай! Но что-то пошло не так. и мои скрипты не захотели работать. Поэтому здесь я опишу то, с чем мне пришлось столкнуться в процессе решения такой задачи.

Итак, первое, и пожалуй одно из самых важных – это понимание того, что запускаться скрипты будут не от имени пользователя (как авторизованного пользователя в домене), а именно от имени учетной записи компьютера с наивысшими правами, не требующими повышения . А важно это потому, что имеет смысл сразу определиться с местоположением ваших скриптов.

В Microsoft подразумевается, что свои скрипты вы будете размещать в папке, которая соответствует редактируемой политике. Но во-первых, это не всегда так, а во-вторых логично предположить, что права (хотя-бы на чтение) у компьютера, который будет обращаться к скрипту – имеются. Однако это тоже ложное мнение! Итак, первое, с чем мы определимся.

Выбор расположения скриптов и права доступа

Мои скрипты расположены не только в папке политики, которая их и будет выполнять.

Один скрипт у меня находится: domen.localSysVoldomen.localPoliciesMachineScriptsStartupMain.ps1

Второй скрипт вызывается из первого и у меня он находится: domen.localNETLOGONzabbix_install.ps1

В случае первого скрипта необходимо: Открыть в редакторе GPO (нужной вам политики): Конфигурация компьютера – Политики – Конфигурация Windows – Сценарий (запуск/завершение) – выбрать Автозагрузка.

В открывшемся окне перейти на вкладку Сценарии PowerShell и нажать внизу кнопку: Показать файлы

2015-09-09%2B17-24-16%2B.png

Открывшаяся папка – то, что вам нужно. Сюда вы копируете свои скрипты, которые планируете выполнять этой политикой. И сразу проверяете права этой папки.

На вкладке Безопасность проверяем наличие прав доступа на чтение и выполнение – группе Domain Computers

Права для SYSTEM (Full) – как правило выставляются корректно изначально. Creator Owner – так же являются корректными.

2015-09-09%2B17-32-53%2B.png

Если права отсутствуют – добавляем их.

И это касается каждой папки, к которой планируется обращение от имени доменного компьютера.

Т.е. в моем случае – мне было необходимо дать такие права еще для папки domen.localNETLOGON а так-же для шары, к которой обращается скрипт и пишет туда логи. sharaLOG

Выбор скрипта для запуска и редактирование GPO

Интерфейс добавления скрипта для обработки в GPO неоднозначен, что касается выбора расположения скрипта и предоставляет различные возможности. А именно: прописать скрипт по локальному пути, по сетевой шаре, указать параметры запуска и даже порядок выполнения, относительно скриптов-пакетников.

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

Вы скопировали скрипт в папку используемой политики в этом-же окне жмете кнопку добавить и выбираете скрипт. Однако в окне скриптов (это видно на скрине выше) – пути к файлу нет. И это нормально. Я тестировал варианты: прописать путь до скрипта даже по сети, например: sharaPSMain.ps1 и такое тоже выполнялось, если права на чтение папки компьютерами домена – присутствовало. Поэтому экспериментируйте.

2015-09-09%2B17-47-28.png

По большому счету все. НО! По умолчанию, ваши PS скрипты не будут запускаться даже из сети, основываясь на безопасности GPO.

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

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

Изменение политики безопасности PowerShell – Выполнение сценариев

Находим нужную политику: Конфигурация Компьютера – Административные шаблоны – Компоненты Windows – Windows PowerShell и открываем политику: «Включить выполнение сценариев»

По умолчанию она выключена, а это значит, что выполнение скриптов ЗАПРЕЩЕНО!

Включая – нам становятся доступны опции политики выполнения и если вас не интересует подпись сертификатов – вы выбираете «Разрешить все сценарии«.

2015-09-09%2B17-53-22.png

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

Для проверки текущей политики безопасности существует командлет:

Get-ExecutionPolicy

Restricted – блокируются любые скрипты.

AllSigned – разрешены только те, которые имеют цифровую подпись

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

Unrestricted – разрешены любые скрипты, но запуская неподписанный скрипт из интернета – программа может потребовать подтверждение.

Bypass – ничего не блокируется, никакие предупреждения и запросы не появляются.

Последний вариант часто используют в пакетниках, вызывая доверенные ps1 скрипты, для беспроблемного запуска. Например:

powershell.exe -executionpolicy bypass -File C:scriptsackup.ps1

Кстати запуск из cmd или bat – Это еще один наиболее простой запуск ps1 скрипта без заморочки на политику безопасности и подписании скриптов ?

Запуск скриптов в Windows Server 2012 R2 Windows 8.1 и выше

Это еще один подводный камень. По умолчанию, в версиях 2012 R2 и Windows 8.1 скрипты компьютера на запуск – имеют задержку на выполнение в 5 минут.

Чтобы это исправить необходимо скорректировать еще один пункт в политике безопасности.

Теперь необходимо создать Централизованное хранилище политик. На контроллере домена скопировать папку PolicyDefinitions целиком из %systemroot% в папку %systemroot%sysvoldomainpolicies

Затем скопировать содержимое из папки C:Program Files (x86)Microsoft Group PolicyWindows 8.1-Windows Server 2012 R2PolicyDefinitions в папку %systemroot%sysvoldomainpoliciesPolicyDefinitions
В последствии эти шаблоны будут автоматически распространены и для других контроллеров домена. А вам необходимо только перезапустить оснастку редактора групповых политик.

Переходим к настройке: Конфигурация компьютера – Политики – Административные шаблоны – Групповая политика – Настроить задержку сценария входа

Включаем этот параметр и выставляем значением «0 мин». Таким образом мы полностью отключаем задержку сценария входа.

2015-09-09%2B18-56-20.png

Теперь наши скрипты будут также успешно работать и в Windows 2012 R2 и Windows 8.1 при загрузке компьютера!

Продолжение:

Также вы можете посмотреть мои обращения в Microsoft Technet, где мне успешно помогали решать эти задачи. За что коллегам отдельная благодарность!

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: