В этой статье мы рассмотрим, как устанавливать программы на компьютеры пользователей домена Active Directory с помощью групповых политик.
Встроенный функционал GPO Windows позволяет устанавливать только программы, распространяющееся в виде MSI или ZAP пакетов. Другие виды программ придется устанавливать альтернативными средствами: с помощью SCCM, через логон скрипты, копирование файлов программы на компьютеры с помощью GPO, запуском разовых скриптов и т.д.
Получите установочный MSI пакет программы
Рассмотрим, как установить MSI пакет программы на компьютеры пользователей с помощью групповых политик Windows на примере клиента Microsoft Teams.
Скачайте MSI пакет с клиентом Teams (http://aka.ms/teams64bitmsi) и скопируйте файл Teams_windows_x64.msi в каталог SYSVOL на контроллере домена (
\\winitpro.ru\SysVol\winitpro.ru\scripts
).
Далеко не все программы предоставляются в виде MSI файла. Чаще всего разработчики отдают их в виде исполняемых EXE файлов, которые не подходят для распространения через GPO. Но есть два способа, которые в некоторых случаях получить установочный MSI программы:
- Некоторые установщики при запуске распаковывают свои файлы в каталог %temp%. Поэтому при установке программы (просто сверните окно установки) попробуйте открыть этот каталог и найти в нем установочный MSI файл.
- Другой способ получения MSI файла – попробовать открыть установочный EXE файл с помощью архиватора 7-Zip. Запустите 7-Zip и в меню выберите File -> 7ZIP –> Open Archive. 7ZIP попробует открыть EXE файл в как архив. В нашем случае из EXE файла с дистрибутивом Acrobat Reader получилось извлечь MSI и MST файлы, которые готовы для установки через групповые политики Windows.
Создаем GPO для установки программы на компьютеры пользователей
Теперь нужно создать новую политику в домене для установки вашего ПО.
- Откройте консоль управления доменными GPO (
gpmc.msc
); - Создайте новую GPO (CorpInstallTeams)и назначьте ее на OU с компьютерами, на которые нужно выполнить установку (Create a GPO in this domain, and link it here);
- Откройте политику и перейдите в раздел Computer Configuration -> Policies -> Software Settings -> Software installation;
- Выберите пункт меню New -> Package;
- Выберите ваш MSI файл, который хранится в каталоге SYSVOL;
- Выберите опцию “Advanced” и нажмите OK;Assigned – программы устаналиваются при входе пользователя, Published – публикуюция на компьютерах и могут быть установлены пользователями из Add/Remove Programs.
- В открывшемся окне можно настроить дополнительные параметры MSI пакета. Я просто изменю отображаемое имя с Teams Machine-Wide Installer на Microsoft Teams Client;
- На вкладке Deployment нажмите кнопку Advanced и включите опцию Ignore language when deploying this package (это позволит игнорировать язык Windows на компьютерах клиентов);
- Перезагрузите компьютер для обновления настроек GPO и при следующей загрузке компьютера будет выполнена установка программы. Она появится в списке установленных программ Windows. Для анализа событий установки включите фильтр по источнику Application Management Group в разделе System Event Viewer-а.В Windows 11 уже встроенный чат клиент Teams, но это не полноценный клиент Microsoft Teams.
- Можно показывать детальный процесс применения политики на компьютере. Для этого включите параметр Display highly detailed status messages в Computer Configuration -> Policies -> Administrative Templates -> System. Теперь при загрузке Windows будет отображаться все выполняемые в фоне процессы. При установке программ через GPO появится надпись Installing managed software AppName;
Изменение параметров MSI пакета для установки через GPO
В стандартном интерфейсе GPO вы не можете указать определенные ключи для установочных MSI пакетов. Что очень неудобно. Например, при установке антивируса вам нужно указать адрес сервера управления. Или при при установке Teams из командой строки с помощью msiexec можно отключить автозапуск клиент MSTeams и скрыть его из списка установленных программ (локальный администратор не сможет удалить клиент Teams). Для этого используется команда:
msiexec /i Teams_windows_x64.msi OPTIONS="noAutoStart=true" ALLUSERS=0
Как добавить опции установки в MSI пакет? Для этого используются файлы преобразования MST. Этот тип файлов позволяет изменить стандартные настройки MSI пакета и использовать ваш сценарий установки.
Для создания файла модификации MST для MSI пакетов можно использовать утилиту ORCA (входит в состав Windows Installer SDK).
Откройте ваш MSI пакет с помощью Orca.
Создайте New Transformation и задайте ваши кастомные параметры MSI пакета в разделе Property. В моем случае для клиента Teams я изменю:
- noAutoStart на
True
- ALLUSERS на
0
Выберите Transform -> GenerateTransform и сохраните изменения в файл с расширением MST (teams_mod.mst). Скопируйте файла в каталог SYSVOL
Теперь нужно удалить предыдущее правило для установки MSI пакета в GPO (т.к. вы можете добавить MST с модификациями пакет только при создании правила установки программы.
Выберите All –> Task -> Remove
Создайте новое правило установки программы, опять выберите msi файл в каталоге SYSVOL и перейдите на вкладку Modification. Нажмите кнопку Add. Выберите созданный ранее MST файл.
Теперь во время установки MSI пакета через GPO к нему автоматически применится файл модификаций MST и установит программу с нужными вам параметрами.
Основные недостатки метода установки MSI программ через GPO:
- Поддерживаются только MSI и ZAP установщики;
- Нельзя запланировать установку программы на определенное время. Одновременная установка программы на множестве компьютеров (обычно это происходит утром при включении компьютеров) может вызвать нагрузку на сеть и DC. В этом случае лучше использовать, например, SCCM. Используя окна обслуживания (maintenance) или настройки WOL (Wake On LAN);
- Нельзя изменить порядок установки программ в одной политике. При добавлении нового установочно пакета в GPO, оно устанавливается последним.
- Нельзя получить отчет об успешности или ошибках установки программы на компьютерах.
А как сделать чтобы отображалось «Installing managed software …» в 7?
Или аналог отображения процесса загрузки 2008ого сервера, когда отображается текущий этап?
А то постоянно появляется только «Пожалуйста подождите»
Чтобы отобразить надпись «Installing managed software», нужно включить политику Computer Configuration ->Policies -> Administrative Templates -> System -> Verbose vs normal status messages (ставим enabled).
В этом случае при загрузке компьютера будет выводится подробная информация о процессе применения групповой политики на клиенте (If you enable this setting, the system displays status messages that reflect each step in the process of starting, shutting down, logging on, or logging off the system.
This setting is designed for sophisticated users that require this information.).
А вот такой момент. Поставил я софтину. А ушлый пользователь ее снес
«Оно само, я ничего не делал»
Как заставить политику установки отработать еще раз на этой рабочей станции?
Тоже самое касается обновлений софта.
Создать новую политику? И опять накрыть всех кто попадает под ее действие?
Наверняка же нет, просто туплю … пятница сегодня.
Забрать у пользователя права админа и снести руками ключ для приложения из HKLM\Software\Microsoft\Windows\Current Version\Group Policy\AppMgmt
При следующей загрузке системе , приложение установится заново
Понятно. Только в том ключе «абракадабра» и понять какое значение за какой софт отвечает слегка не очевидно 🙂
Computer Configuration ->Policies -> Administrative Templates -> System -> Verbose vs normal status messages
Это в 2008 так. А в 2012 это теперь
Computer Configuration ->Policies -> Administrative Templates -> System -> Display highly detailed status messages
This policy setting directs the system to display highly detailed status messages.
This policy setting is designed for advanced users who require this information.
If you enable this policy setting, the system displays status messages that reflect each step in the process of starting, shutting down, logging on, or logging off the system.
If you disable or do not configure this policy setting, only the default status messages are displayed to the user during these processes.
Note: This policy setting is ignored if the «»Remove Boot/Shutdown/Logon/Logoff status messages»» policy setting is enabled.
Ой только заметил коммент 🙂 Правда уже нашел параметр реестра и через gpp раскидал на нужные компьютеры
Но тоже пригодится, спасибо 🙂
А что делать, если при попытке установить ПО при следующем входе в систему у пользователей оно не устанавливается и в журнале событий фигурируют события: 101 103 108 и 1112. Шара доступна каждому пользователю, а такие параметры, как: Всегда ждать сеть при запуске и входе в систему и Указать время ожидания при обработке политики загрузки не помогают?
Сработает ли такая политика, если компьютер-член домена был унесен домой? К работе подключается через опен-впн. После подключения пользователь заходит на общие шары, и вводит доменные логин-пароль.
У вас VPN туннель устанавливается уже после входа в Windows, верно?
Значит логон политики в принципе не смогут отработать на нем.
Устанавливайте соединение open-vpn на самом роутере, прописывайте первичным DNS сервер AD…
Если у вас нехватает знаний, скорее всего у вас весь траффик пойдёт через VPN сервер работы.
Поэтому или почитайте как настраивается роутинг, чтобы только нужный траффик ходил через VPN или обратитесь к тому, кто знает как это делается
Добрый день!
У меня отсутствует ветка-Конфигурация компьютера \ Политики \ Административные шаблоны \ Система \ Групповая политика \ Время ожидания при обработке политики загрузки\ в редакторе ГП на контроллере.
Как ее добавить, через шаблоны какие то?
Вы редактируете GPO непосредственно с сервера? Какая версия Windows Server на DC?
Надеюсь не припозднился. Так вот, делаю всё в точности как описано, загружаю msi пакеты, перезагружаю станции, ничего не работает.
При этом, другие политики отрабатывают, уже не знаю куда можно копать, дайте пожалуйста подсказку.
1) С помощью gpresult (https://winitpro.ru/index.php/2014/08/15/gpresult-diagnostika-primeneniya-gruppovyx-politik/) прjверить, что политика назначается на ваш компьютер
2) Смотреть ошибки установки пакета в Event Viewer > Windows Logs — Application . Поищите ошибки от MsiInstaller
3) можно еще включить режим дебага установки прилжений через gpo, но сначала первые 2 пункта.
Что за приложение ставите?
Пар-ры сервера и ПК:
Windows server 2016
Windows 10
В начале статьи написано, что так можно устанавливать агенты администрирования для антивирусов, к примеру для Касперского, тогда не раскрыта информация добавления ключей. Статья написана слишком, слишком просто, большинство устанавливаемых программ требуют множество ответов при установке. У агента Касперского запрашивается и IP адрес KSC и соглашение с лицензией EULA и ещё куча параметров. Эта статья не даёт ответа на вопросы установки с ключами.
Вы правы и не правы одновременно. Да статья действительно очень общая.
Но это статья но об общих принципах установки ПО через ГП, а не не об установке кокретного ПО/пакета/и т.д. Да и описать всё попросту невозможно.
После прочтения, тонкости и нюансы — админ разбирает сам.
А если выложите инструкцию сюда — многие вам скажут спасибо.
Добавил в статью блок про создание файлов модификации MST для MSI пакетов. В MST файле вы можете задать нужные вам параметры для установки MSI пакетов.
На DC нельзя просто взять и изменить содержимое файла SysVol в начале статьи, куда с легкостью автор закинул пакет msi. Было бы неплохо дополнить статью решением извечной проблемы Access Denied.
Господа) доброго времени суток) помогите пожалуйста с одной проблемой. Есть домен общая шара, несколько компов в домене, на шаре лежат вордовские файлы которые для всех в доступе, у всех одинаковые права тк все в одной группе, так вот, суть вопроса в следующем, почему кто то может задавать выше указанным файлам длинные имена, а у кого то можно написать название по типу «письмо» и все. ????????
Здравствуйте.
А как можно самому сделать MSI пакет из установочного пакета с EXE?
Необходимо копировать файл public.key в папку установочного пакета, а затем собрать из этого MSI.
Александр
Как я понял, вам нужно собрать из exe и ключа msi пакет. Тут понадобится сторонее ПО — лет 10 назад для этой задачи я пользовался SuperOrcaSetup.
Сейчас проект вроде как похоронен. Но альтернатив полно, есть платные и бесплатные.
добрый день, если я изменил политику и подкинул версию свежее, запустится ли установка снова и обновится ли приложение?
Вот здесь в разделе So Many Updates: Upgrading an Application описан процесс добавления обновленного пакета:
_https://www.red-gate.com/simple-talk/sysadmin/general/more-advanced-deployments-with-group-policy-software-installation/
Добрый день! А можно распространить политику установки ПО на подготовленную группу компьютеров? Что бы установка прошла на определённые компьютеры в одном подразделении?
1) Создать группу безопасности в AD
2) В security filtering GPO удалить группу auth users и добавить вашу группу
3) Назначить GPO на OU с компьютерми
4) Добавить компьютеру в группу AD, чтобы на них применилась политика установки
Отработало! Спасибо!
Добрый день, а есть ли софтина типа как software center, чтобы самому сформировать пакет ПО, который необходимо и через gpo ту программу все разослать, у пользователя появится утилитка с приложениями и он самостоятельно на свой выбор без прав администратора сможет установить нужную программу?
SCCM такое может. может есть что-то и open-source, но при налиичи sccm оно не нужно )
Как раз таки вопрос в том, если нет возможности купить этот продукт, есть ли бесплатная альтернатива?
Здравствуйте. Установка программ идет через Default domain policy, хотелось бы установку производить с другой политики. Чтобы работало из новой политики, мне нужно удалить все из старой с пометкой «оставить установленные программы без возможности установки новых» ? и будет ли работать из новой. Там уже присутствует довольно большая цепочка версий, той программы которая устанавливается. (Причина для того что бы эта программа не ставилась на контроллеры домена)
Можете просто удалить MSI установщик из GPO в режиме «allow users to continue to use the software, but prevent new installations» и создать чистую GPO. Это лучший вариант.
Если сложно восстановить цеполчку, как вариант — можно сделать копию default domain gpo и руками почистить все настройки, которые не относятся к установке программ.
Привет. Прошу помощи, кейс таков:
Создана GPO на разворачивание приложухи нарочно в appdat’у, чтоб юзер мог сам обновлять ПО’ху.
Но вот если юзер удалит это ПО, то обратно оно не поставится (а надо бы) и понятно почему: в реестре сохранилась ветка с отработкой данной политики. Решение, как бы, есть — удалить эту ветку и ПО ставится заново.
Это конечно хорошо, но как сделать скриптец какой-нибудь, который сканит систему на наличие этой ПОшки и если её нет, то удалял бы эту строку в реестре и ПО ставилось бы заново (т.е. скриптец выполнял бы поиск ПО сначала по компу и если ПО нет, то по реестру по какому-нибудь уникальному для этой ПОшки значению (коду продукта, например {0C7AA2C…..}), ну и удалял бы эту ветку, чтоб политика отработала б заново)
???
Спасибо!
Наверно можно заморочиться с WMI фильтром, который проверяет наличие ПО, затем привязать такой WMI фильтр к политике, которая черех Registry GPP чистит GUID установки в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\AppMgmt.
Доброго времени суток!
Подскажите пожалуйста реализуемо ли такое: У меня есть несколько офисов в каждом установлено сетевое хранилище, хранилище смонтировано на компы как диск Z:. На каждом хранилище есть одинаковые папки «IT» c ПО.
Как доменной политикой можно устанавливать из этих папок нужно мне ПО.
Папки синхронизируются по ночам.
Качать с сервера ПО не вариант скорость инета не позволяет.
В офисах есть собственные DC?
Если нет — можно сделать для каждого офиса отдельную GPO с установкой софта, которая будет ссылаться на ближайший сервере.
Нет в офисах нет отдельных DC. В офисе есть только NAS Synology.
Этих отдельных офисов может быть от 14 до 22 шт. Для каждого делать отдельную политику очень трудоемко я считаю.
Вот если бы можно было указать путь до софта в политике, примерно таким образом «Y:\install\app…
это бы решило проблему.
Есть вариант из двух шагов. Первая политика ложит батник локально на диск C:\ пользователю, вторая политика следом запускает этот батник. Внутри батника указан путь на папку доступную для этого компьютера, допустим Synology и стартует установку. Иногда у меня получалось так, что вторая политика отрабатывает быстрее чем первая, батник ещё не скопирован а Пк хочет его запустить, но ничего страшного, после второй перезагрузки ПК всё запускалось.
Первая GPO: перекачиваем батник на диск C:\ ПК пользователя
Preferences\WindowsSettings\Files\ Action = Replace Source = из сети Destination = диск C:\ пользователя
Вторая GPO: запуск батника с локального диска пользователя
Policies\WindowsSettings\Scripts\Startap\ C:\start.bat
«Нет в офисах нет отдельных DC. В офисе есть только NAS Synology.»
Не «усложняйте» то, что можно сделать просто.
А поднять DC на виртуалке никак?
Тем более что в каждом офисе есть Synology.
Между офисами, я полагаю, есть постоянный интернет канал.
Тогда между Synology можно поднять VPN.
Наверняка есть компьютер, который не выключается.
Достаточно будет VMWare Player и с виртуальным Read-only DC.
«Клиентскому расширению «Software Installation» групповой политики не удалось применить один или несколько параметров, поскольку эти изменения должны обрабатываться до запуска системы или до входа пользователя. Завершение обработки групповой политики будет выполнено перед следующим запуском системы или входом этого пользователя, что может вызвать замедление загрузки и запуска системы.»
Не давно при обновлении политики начало писать вот такое сообщение. Что может быть, я вроде ничего не менял
Включите логирование применения расширения Software Installation GPO:
Software Installation CSE Verbose logging (appmgmts.dll)
KB article: 246509 Troubleshooting Program Deployment by Using Verbose Logging
HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Diagnostics
ValueName: AppmgmtDebugLevel
ValueType: REG_DWORD
Value Data: 0x9B or 0x4B
Log File: C:\WINNT\debug\usermode\appmgmt.log
Причины проблемы могуть бысть разные: недоверенны сертификаты, нед доступа к msi файлу, и т.д.
Спасибо
Подскажите, пожалуйста, а как включить логирование расширения ?
Возникла следующая ситуация, я разместил установщик в папке \\domain_name\SYSVOL\domain_name\scriots
но при создании GPO установщик не отображается, папка scripts пустая, в чем может быть дело?