В этой статье мы рассмотрим, как устанавливать программы на компьютеры пользователей домена Active Directory с помощью групповых политик.
Встроенный функционал GPO Windows позволяет устанавливать только программы, распространяющееся в виде MSI или ZAP пакетов. Другие виды программ придется устанавливать альтернативными средствами: с помощью SCCM, через логон скрипты, копирование файлов программы на компьютеры с помощью GPO, запуском разовых скриптов и т.д.
Содержание:
- Получите установочный MSI пакет программы
- Создаем GPO для установки программы на компьютеры пользователей
- Изменение параметров MSI пакета для установки через GPO
Получите установочный MSI пакет программы
Рассмотрим, как установить MSI пакет программы на компьютеры пользователей с помощью групповых политик Windows на примере клиента Microsoft Teams.
Скачайте MSI пакет с клиентом Teams (http://aka.ms/teams64bitmsi) и скопируйте файл Teams_windows_x64.msi в каталог SYSVOL на контроллере домена (
\\winitpro.ru\SysVol\winitpro.ru\scripts
).
Обратите внимание, что есть x86 и x64 версии MS Teams. Если у вас остались компьютеры x86 версиями Windows, вам нужно создать отдельные политики для x86 и x64 компьютеров. Для фильтрации версий Windows в политиках можно использовать WMI фильтры GPO.
Далеко не все программы предоставляются в виде 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-а.
- Можно показывать детальный процесс применения политики на компьютере. Для этого включите параметр 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, оно устанавливается последним.
- Нельзя получить отчет об успешности или ошибках установки программы на компьютерах.
This article will show you how to install a program or application on a remote computer in your network without user interaction.
There are many ways to perform a remote installation;
in this article, I will show you how to install software on a remote computer with the PSexec tool
PSExec is a free Microsoft tool that allows you to execute programs and commands on other systems, complete with full interactivity for console applications, without manually installing client software.
- The Prerequisites:
- Step 1: Download The PSExec Tool
- Step 2: Download The MSI Package
- Step 3: Configure The Remote Computer Firewall
- Step 4: Run The Script
- Mistakes to avoid when remotely installing Software on Windows
The Prerequisites:
Here are the prerequisites you have to consider to perform a successful remote installation;
- Download the PSexec tool;
- Download the MSI package of the application you want to install;
- Ensure that the Windows 10 firewall on the remote computer does not block “File and Printer sharing” traffic;
- You need to have the administrator account password on the target PC, if not in the same domain;
Step 1: Download The PSExec Tool
Download PSExec tool from the Microsoft webpage, then extract the executable into a folder (Ex: C:\SysinternalsSuite\)
Step 2: Download The MSI Package
Download the MSI package of the application you want to install.
Important: Not all applications support silent mode when running the Setup.exe installer, and hence you need to download the MSI package instead.
Let’s say you want to install the Google Chrome browser.
You need to download the MSI package from the Chrome download page;
Step 3: Configure The Remote Computer Firewall
Ensure the Firewall on the remote computer allows “File and Printer sharing (SMB-In)” traffic on port TCP 445.
You can test if port TCP 445 is open using the PowerShell command “test-netconnection“
Step 4: Run The Script
- Open a command prompt as an administrator;
- Copy the MSI package on the remote computer using this command:
Copy c:\users\username\downloads\GoogleChromeStandaloneEnterprise64.msi \\ENDUSER-PC\C$
Where “ENDUSER-PC” is the name of the remote computer.
Note that you can also use the IP address of the remote computer instead of the computer name.
- In the command prompt, change the current directory to “C:\SysInternals”;
- Run the following command to start installing Google Chrome on the remote computer;
PsExec.exe \\ENDUSER-PC\ -i -s msiexec.exe /i "c:\GoogleChromeStandaloneEnterprise64.msi" /qn /norestart
PSExec will launch the GoogleChromeStandaloneEnterprise64.msi installer on the remote computer, which will install Google Chrome in quiet mode (/qn) without user interaction.
Mistakes to avoid when remotely installing Software on Windows
- Not checking system requirements: Before installing any software, it’s essential to check the system requirements to ensure that the Software is compatible with the target PC’s operating system and hardware.
- Not testing the installation process: Before installing Software remotely, it’s a good idea to test the installation process on a test machine to ensure that everything works as expected. This will help you identify and fix any issues before deploying the Software to production machines.
- Not having proper permissions: To install Software remotely, the user must have appropriate permissions to access the target PC. The installation process may fail if the user does not have the necessary permissions.
- Not checking for conflicts: Installing new Software on a computer with conflicting Software can cause unexpected problems. Before you install any software remotely, ensure there are no conflicts with existing Software.
- Not communicating with end-users: When you remotely install Software on a user’s computer, it’s important to communicate with the user to let them know what to expect. This can include letting them know when the installation will take place and what steps they need to take, if any.
- Not having a backup plan: Even with careful planning and testing, things can go wrong during the remote installation. It’s essential to have a backup plan in place in case something goes wrong. This can include having a plan to roll back the installation or having a backup image of the computer.
I hope you found this blog helpful. Before you go, I’d like to ask if you’d consider supporting my work. Running this blog requires a lot of time and dedication, and with more people using ad blockers and AI tools, ad revenue has been declining. Your support would allow me to keep creating the content you enjoy. Thank you for considering it..
Related
Microsoft recommends installing applications only from the Microsoft store so that your PC runs smoothly and it is protected. However, you can choose to get your app from other sources other than this store as well if you wish. This article shows you exactly how to install apps from anywhere in Windows 11 system.
Now, the Application Installation Control feature in your Windows 11 gives you four different options on choosing to get from.
- Anywhere
- Anywhere but let me know if there is a comparable app in the Microsoft Store
- Anywhere, but warn me before installing an app that is not from the Microsoft Store
- The Microsoft Store only
Now, let’s get to it.
Page Contents
There are three different ways you can do it.
Method 1: Install apps from anywhere in Windows 11 using Settings App
- Open the Settings Application and go to Apps.
- Here, go to Advanced App settings. Or Apps & Features.
- In the menu that opens, the first thing you see is Choose where to get apps. In the drop-down menu on the right of it, select your Anywhere.
Method 2: Using the Registry Editor – Solution 1
- Press the keys Win + R to open Run.
- Type Regedit and press OK. Select Yes in the UAC prompt.
- Follow the path mentioned below in the Registry Editor.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer
- Find AicEnabled in the list. If you do not find it in the list, you need to create it manually. Right click in the blank space on this screen. Select New > String Value.
- Rename the value as AicEnabled by right clicking on it. Now double click on it to define its value as Anywhere.
Click on OK. Now close the Registry Editor and you are done.
Method 3: Using the Registry Editor – Solution 2
We are going to use the Registry Editor only, but with a different path using Policy this time. Follow steps 1 & 2 of Method 2 to open Registry Editor.
Now, Follow the path below:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender\SmartScreen
- If you cannot find SmartScreen key under Windows Defender. You will have to create it manually. Simply right click on the blank space when the Windows Defender is selected.
Select New > Key on the menu. Name this new key as SmartScreen.
- Click on this key to select it. In the window that opens, right click on the blank space and create a new DWORD named ConfigureAppInstallControlEnabled.
- Double click on this new DWORD and change its value to 1. Then select OK.
- Now, following the same process, create a string value named ConfigureAppInstallControl and keep its value as Anywhere by following the same method (Note that you will have to select New > String Value this time after right clicking on the blank space).
You can close the Registry Editor now. That is it. You can now install applications from anywhere in your Windows 11.
RELATED ARTICLES
Эффективность работы компании, а также и ее безопасность, напрямую зависят от программного обеспечения, используемого на рабочих станциях, серверах и мобильных устройствах ее сотрудников. С другой стороны, «лишнее» ПО может отвлекать сотрудников от выполнения своих обязанностей, а также создавать дополнительные риски безопасности. Как можно централизованно и удаленно устанавливать требуемое ПО с помощью RMM-решений?
Рассмотрим на примере Panda Systems Management
Зачем нужна централизованная установка ПО
Пожалуй, ответ на данный вопрос очевиден: чтобы значительно упростить и ускорить процесс установки требуемого программного обеспечения на корпоративные серверы и рабочие станции, а также мобильные устройства сотрудников компании. Чтобы сотрудники использовали именно то ПО, которое им действительно необходимо для выполнения своих служебных обязанностей. А ведь еще есть вопросы управления обновлениями и патчами ПО, чтобы в первую очередь, закрывать новые уязвимости.
Естественно, все эти вопросы вполне актуальны для любого предприятия, потому что в той или иной степени влияют на эффективность его работы, а, следовательно, и его конкурентоспособность. Таким образом, централизованная и удаленная установка ПО способствует более эффективной работе не только непосредственно ИТ-отдела, но и всей компании.
RMM-сервис для централизованной установки ПО
Для автоматизированного решения многочисленных ИТ-задач существуют специальные комплексные RMM-решения, предназначенные для удаленного и централизованного мониторинга, обслуживания и поддержки корпоративных сетей. К классу RMM-решений относится облачный сервис Panda Systems Management.
Ранее мы уже рассказывали в целом о данном облачном сервисе, а также говорили про его использование для мониторинга корпоративных сетей и управления мобильными устройствами, но сегодня мы решили рассказать про централизованную установку ПО.
Сервер Panda Systems Management может автоматически и удаленно устанавливать ПО на все управляемые устройства (рабочие станции, серверы и некоторые мобильные устройства). Это позволяет администратору быть уверенным в том, что все управляемые устройства имеют то ПО, которое необходимо сотрудникам для работы, при этом ему не требуется удаленно подключаться к каждому устройству по отдельности, чтобы инсталлировать требуемую программу.
Автоматическое развертывание ПО также помогает администратору поддерживать уровень защиты от уязвимостей ПО (Java, Adobe и пр.), что позволяет значительно снизить риск инфекции и потери конфиденциальных корпоративных данных.
Итак, сегодня мы расскажем:
1. Требования и процедура развертывания ПО
2. Различные примеры внедрения ПО
3. Оптимизация полосы пропускания канала связи
4. Установка ПО на устройства с iOS
Вы можете бесплатно зарегистрировать триал-версию Panda Systems Management на сайте и протестировать сервис в своем IT-окружении.
Как быстро внедрить решение в Вашем ИТ-окружении можно узнать в нашей предыдущей обзорной статье.
Требования
Развертывание и установка ПО – это процесс, который выполняется с помощью компонентов приложений для платформ Windows, Linux и Mac. Также есть возможность установки приложений и на смартфоны и планшеты с iOS, о чем мы расскажем в конце данной статьи.
Подобно сценариям и компонентам для мониторинга, компоненты приложений содержат небольшой скрипт, который для решения данной задачи руководит процессом установки, чтобы инсталлировать набор файлов и/или программ.
Чтобы установить на устройства пользователей группы файлов или программ, необходимо для каждой такой группы создать отдельный компонент.
Процедура развертывания и установки программных пакетов
В целом, обычная процедура состоит из четырех шагов:
Шаг 1. Идентификация устройств, на которые необходимо установить ПО
Процедура поиска устройств, на которых не установлены требуемые программы или необходимые файлы, будет отличаться в зависимости от того, может ли Panda Systems Management выполнить аудит программ, установленных на устройстве, или нет.
Если устанавливаемое ПО появляется в списке установленных программ, который хранится в операционной системе, то это ПО также будет отображаться в отчетах Panda Systems Management по аудиту ПО. Таким образом, можно создать фильтр для фильтрации устройств, на которых уже установлено это ПО.
Если ПО не имеет инсталлятора, а потому не показывается в списке установленных программ, или речь идет про одиночный документ, конфигурационные файлы и пр., то Panda Systems Management не сможет отфильтровать устройства, на которых уже имеются данные файлы, а потому установочный скрипт должен будет осуществить соответствующие проверки.
Шаг 2. Генерация компонента для установки ПО
Для этого в целом необходимо выполнить следующие действия.
1. Запустить задачу по распространению компонента для установки на локальные агенты Panda Systems Management, установленные на требуемых устройствах.
Вы можете запустить эту задачу по расписанию, настроив ее на определенную дату и время, когда пользователь не будет работать на своем устройстве, чтобы свести к минимуму влияние на производительность.
2. Собрать данные с результатами установки, чтобы проверить наличие возможных ошибок.
После завершения процесса, система будет собирать возможные коды ошибок и/или сообщений, которые будут показывать в консоли управления результат установки.
У данной задачи может быть четыре финальных статуса:
• Success: Выполнение задачи по установке было завершено без ошибок. Скрипт возвращает код Errorlevel 0.
• Success — Warning: Выполнение задачи по установке было завершено с некоторыми незначительными ошибками. Скрипт возвращает код Errorlevel 0 и соответствующее сообщение, которое будет показываться в консоли управления.
• Error: Выполнение задачи по установке не было завершено. Скрипт возвращает код Errorlevel 1.
• Error-Warning: Выполнение задачи по установке не было завершено. Скрипт возвращает код Errorlevel 1 и соответствующее сообщение, которое будет показываться в консоли управления.
Примеры установки
Чтобы продемонстрировать возможности по централизованной установке ПО, ниже мы приведем четыре примера:
• Внедрение самоустанавливающегося ПО
• Внедрение ПО без инсталлятора
• Внедрение документов и файлов с использованием языка скриптов
• Внедрение документов и файлов без использования языка скриптов
Процедуры, описанные в этой главе, а также используемые сторонние утилиты и языки скриптов являются лишь примерами, и они могут быть различны. Panda Systems Management является достаточно гибким решением, и он может быть адаптирован к тем инструментам, при использовании которых администратор может чувствовать себя наиболее комфортно.
Пример 1. Внедрение самоустанавливающегося ПО
В данном примере мы попробуем централизованно и удаленно установить пакет dotNetFx40_Full_x86_x64.exe для Microsoft Framework .NET 4.0 на те устройства, на которых он еще не установлен.
В силу того, что Microsoft Framework .NET 4.0 – это программа, которая отображается в списке установленных программ, хранящемся в операционной системе устройства, мы будем использовать фильтр для выборки тех устройств, на которых этот пакет еще не установлен.
Установочный пакет представляет собой самораспаковывающийся .EXE-файл, который допускает использование параметров /q /norestart для установки в скрытом режиме и предотвращения перезагрузки устройства, а потому никакой дополнительной специальной подготовки нам не понадобится.
Шаг 1. Выберите устройства, на которые необходимо установить пакет
Чтобы выбрать устройства, на которые требуется установить данный пакет, необходимо воспользоваться фильтром устройств. Для этого в консоли управления Panda Systems Management откройте требуемый сайт (проект) в разделе Sites, после чего в левой колонке в блоке Sites Devices Filters нажмите на значок с плюсиком, чтобы добавить требуемый фильтр:
В результате этого откроется окно для добавления фильтра устройств, в котором необходимо указать название фильтра, критерии отбора (Software package, Does not contain, Microsoft .NET Framework 4) и нажать кнопку Save:
Теперь в блоке Sites Devices Filters добавился настроенный фильтр, при нажатии на который Вы сможете получить список устройств, удовлетворяющих критериям отбора.
Кстати, иногда при указании названия пакета ПО в критериях фильтра, необходимо точно знать, какая идентификационная строка соответствует этому пакету (особенно в случае с каким-нибудь специфическим ПО). В этом случае необходимо будет в списке устройств найти устройство (можно также используя различные фильтры), на котором данный пакет уже установлен, открыть это устройство из списка, выбрать закладку Audit и включить опцию Software.
Шаг 2. Создайте компонент для установки ПО
Это можно сделать достаточно легко: в консоли управления в основном меню выберите раздел Components, нажмите кнопку New component. В результате этого откроется окно для добавления компонента. В списке Category необходимо выбрать Applications. Укажите имя компонента и его краткое описание (при необходимости) и нажмите кнопку Save.
После этого Вы сразу увидите окно с редактированием параметров данного компонента. В этом окне необходимо выполнить следующие изменения:
• В левом верхнем углу можно нажать на звездочку, чтобы добавить этот компонент в избранное. В этом случае иконка звездочки станет желтой, а сам компонент появится в списке компонентов.
• Укажите используемый язык скриптов, выбрав соответствующее значение в списке Install command. В данном случае стоит значение Batch.
• Вставьте код скрипта.
• Добавьте файл с пакетом, который требуется установить.
В данном скрипте по сути дела одна строка, в которой запускается установочный пакет с соответствующими параметрами для скрытой установки.
Шаг 3. Запустите задачу для развертывания пакета ПО на агентах требуемых устройств
В этом случае Вам необходимо будет снова открыть свой сайт (проект), в левой колонке в блоке Sites Devices Filters нажать на созданный ранее фильтр, чтобы получить список требуемых устройств, куда необходимо установить пакет. Затем в этом списке выберите требуемые устройства (а скорее всего, все устройства) и в панели действий нажмите на кнопку для быстрого запуска задачи (при необходимости можно и запланировать выполнение данной задачи на определенное время, нажав на кнопку, расположенную левее от данной кнопки).
В результате этого откроется окно, в котором Вам необходимо выбрать требуемый компонент и нажать кнопку OK.
Шаг 4. Проверьте результаты для выявления возможных проблем
Проверить результат можно в разделе Scheduled Jobs -> Completed Jobs.
Также хороший способ проверить результаты установки – это снова запустить предварительно настроенный фильтр устройств, чтобы убедиться в том, что более не осталось ни одного устройства с неустановленным ПО. В том же случае, если какие-то устройства окажутся в данном списке устройств, то по ним можно будет проверить наличие ошибки установки.
Данные аудита ПО, установленного на устройствах, синхронизируются с консолью управления каждые 24 часа, поэтому если с момента установки ПО еще не прошли сутки, то список установленного ПО на закладке Audit не будет обновлен. Однако можно вручную обновить список установленного ПО, используя кнопку Request device audit в панели действий.
Пример 2. Внедрение ПО без инсталлятора
Многие программы содержат простой исполняемый файл без соответствующего инсталлятора, который генерирует необходимую структуру в меню Пуск, иконки на рабочем столе или соответствующие записи в списке установленных на компьютере программ (например, в Панели управления – Программы и компоненты). Такие типы программ могут быть установлены, например, просто запуском этого исполняемого файла. Однако, в таком случае Panda Systems Management не сможет предоставлять корректный аудит установленного на ПК программ, т.к. такие программы не будут появляться в списке установленных программ, хранящемся в операционной системе устройства.
По этой причине часто используются сторонние утилиты, которые позволяют генерировать MSI-пакет со всеми добавляемыми программами, создавая все необходимые группы в меню Пуск, а также иконки на рабочем столе пользователя для упрощения доступа к программе.
В нашем примере мы будем использовать утилиту Advanced Installer, бесплатная версия которой позволяет нам легко генерировать MSI-инсталляторы.
Чтобы скачать бесплатную версию Advanced Installer, посетите страницу
Чтобы сгенерировать инсталлятор, выполните следующие действия:
1. Установите эту утилиту на свой ПК, запустите ее и выберите бесплатный шаблон Simple
2. В разделе Product Details введите основные данные инсталлятора: Product Name (название продукта), Product Version (версия продукта) и Company Name (название компании)
3. Добавьте программы и файлы, которые необходимо установить, а также иконки, которые необходимо создать. Это можно сделать на закладке Files and Folders.
4. В завершение этого процесса, нажмите Build, после чего в выбранную папку будет сгенерирован MS-пакет:
После того как установочный пакет будет сгенерирован, необходимо выполнить те же самые шаги по созданию компонента для установки и его развертыванию, как это было описано в примере выше (Внедрение самоустанавливающегося ПО), за исключением скрипта Batch, т.к. в данном случае команда для установки будет немного отличаться.
Утилита MSIEXEC позволяет использовать параметр /qn для запуска скрытой установки.
При создании компонента (смотрите порядок создания в предыдущем примере) в списке Category необходимо выбрать Applications. В окне редактирования компонента выполните следующие действия:
• В левом верхнем углу нажмите на звездочку, чтобы добавить этот компонент в избранное. В этом случае иконка звездочки станет желтой, а сам компонент появится в списке компонентов.
• Укажите используемый язык скриптов, выбрав соответствующее значение в списке Install command. В данном случае стоит значение Batch.
• Вставьте код скрипта с указанием на утилиту MSIEXEC, запускающей сгенерированный MSI-пакет (в нашем примере – это файл My Software.msi)
• Добавьте файл с пакетом My Software.msi, который требуется установить.
Пример 3. Внедрение документов и файлов с использованием языка скриптов
В этом примере нам необходимо внедрить три документа Word в папку, расположенной в корневой директории устройства пользователя. Полный код скрипта можно посмотреть в этом файле. Итак, для решения поставленной задачи необходимо выполнить следующие действия:
Шаг 1. Выберите устройства, на которые необходимо установить пакет
Т.к. в этом примере Panda Systems Management не может отслеживать состояние жесткого диска на устройстве пользователя на уровне системных файлов, то установочный скрипт будет разворачиваться на всех устройствах сайта, при этом скрипт (строки 19-24) будет проверять, существует ли папка, содержащие документы, или нет.
Если папка не существует, то она будет создана (строка 28), после чего документы будут перемещены в нее (строки 30-32), а сообщение будет отправлено через стандартный «выход» (строка 37).
Шаг 2. Создайте компонент для установки ПО
Как всегда, на этом шаге необходимо создать компонент приложений, для которого необходимо указать скрипт и привязать эти три документа Word.
В блоке Post-Conditions Вы можете указать текстовые строки, которые консоль управления будет интерпретировать как предупреждение:
Пример показывает, что если стандартный выход (Resource: stdout) содержит (Qualifier: is found in), то результат выполнения скрипта Deploy unsuccessful будет отображаться как предупреждение.
Шаг 3. Запустите задачу для развертывания пакета ПО на агентах требуемых устройств
В консоли управления у требуемого сайта (проекта) выберите в списке устройств те устройства, на которые необходимо внедрить эти три документа Word, после чего в панели действий нажмите на иконку Quick job или Job, чтобы создать соответствующую задачу.
Если необходимо внедрить документы на всех компьютерах в разных сайтах (проектах), то Вы можете выбрать эти сайты на уровне Вашего аккаунта в консоли управления Panda Systems Management.
Шаг 4. Проверьте результаты для выявления возможных проблем
В нашем примере у скрипта определены три выходных условия:
• Success: Файлы копируются в требуемую папку без каких-либо ошибок (строки 30-32). Заканчивается с ErrorLevel0 (строка 38).
• Error: При копировании файлов возникает ошибка. Заканчивается с ErrorLevel1 (строка 35).
• Success — Warning: Папка уже существует, поэтому файлы не скопированы. Заканчивается с ErrorLevel0 (строка 23) и генерируется строка Deploy unsuccessful, которую консоль управления интерпретирует как предупреждение, что было настроено в блоке Post-Conditions на шаге 3.
После того как задача запущена, она появится в разделе Scheduled Jobs -> Active Jobs.
На закладке Completed Jobs Вы сможете увидеть результат выполнения задачи, который будет помечен красным цветом, если результат содержит ошибку, оранжевый – если имеется предупреждение, или зеленый – если задача успешно выполнена.
Иконки Stdout и Stderror показывают копию стандартного выхода и стандартной ошибки, генерируемые скриптом.
Кроме этого, данная закладка содержит панель иконок, которая позволяет запускать различные действия:
• Набор иконок Actions группирует иконки, которые позволяют Вам повторно запустить задачу, перезагрузить страницу, чтобы обновить статус задач, или скачать стандартный выход или ошибку в файл
• Фильтр Views позволяет Вам фильтровать задачи по статусу
Пример 4. Внедрение документов и файлов без использования языка скриптов
Установочный скрипт можно значительно упростить, если не требуются предварительные проверки или если не требуется генерировать предупреждения в консоли управления.
В данном примере необходимо внедрить 3 документа, которые использовались в предыдущем примере, но в этом примере, вместо создания структуры папки из самого скрипта, создан самораспаковывающийся EXE-пакет, который содержит заархивированные документы и необходимую структуру папок. Данный EXE-пакет может быть создан с использованием различных утилит, например, WinRar.
Чтобы скачать бесплатную версию WinRar, перейдите на сайт
В этом примере был создан самораспаковывающийся EXE-файл со следующими характеристиками:
• Работает в скрытом режиме (Silent).
• Требуемая папка с контентом автоматически создается в C:\.
• Если папка уже существует, ее контент будет перезаписан без предупреждения.
Важно создать самораспаковывающийся файл, который работает в скрытом режиме, т.е. он не будет показывать диалоговых окон и не потребует вмешательства со стороны пользователя.
На всякий случай давайте рассмотрим шаги по созданию самораспаковывающегося установочного файла с помощью WinRar.
Шаг 1: Подготовьте папку с документами, которые необходимо внедрить.
Создайте корневую папку ACME Documents, в которую положите все файлы, папки и подпапки, которые необходимо внедрить.
Шаг 2: Сгенерируйте исполняемый файл.
В программе WinRar при создании архива ACME Documents на закладке Общие включите опции Создать SFX-архив и Создать непрерывный архив.
Теперь необходимо настроить архив в скрытом режиме. Для этого перейдите на закладку Дополнительно и нажмите кнопку Параметры SFX…
В окне Дополнительные параметры SFX выберите закладку Режимы и в блоке Режим вывода информации выберите опцию Скрыть все.
В этом же окне выберите закладку Общие и укажите путь для распаковки, где должна быть создана папка.
И еще выберите закладку Обновление, в которой необходимо указать, что все файлы, если они уже существуют на ПК, будут перезаписываться без дополнительных запросов к пользователю.
После этого нажмите кнопку ОК. В результате этого будет создан EXE-пакет (ACME Documents.exe) с требуемыми параметрами.
После генерации пакета необходимо выполнить уже все стандартные шаги по выбору устройств, созданию компонента, запуску задачи и проверки результатов ее выполнения.
Обратите внимание на параметры, которые необходимо использовать при создании компонента:
При создании компонента (смотрите порядок создания в предыдущих примерах) в списке Category необходимо выбрать Applications. В окне редактирования компонента выполните следующие действия:
• В левом верхнем углу нажмите на звездочку, чтобы добавить этот компонент в избранное. В этом случае иконка звездочки станет желтой, а сам компонент появится в списке компонентов.
• Укажите используемый язык скриптов, выбрав соответствующее значение в списке Install command. В данном случае стоит значение Batch.
• Вставьте код скрипта
• Добавьте файл с пакетом ACME Documents.exe, который требуется внедрить.
В результате этого скрипт будет запускать самораспаковывающийся архив, который будет создавать папку в корне диска C со всей внутренней структурой, перезаписывая любой существующий контент, если такая папка уже имеется.
Оптимизация полосы пропускания канала связи
Локальный агент, установленный на каждом устройстве, проверяет сервер Panda Systems Management на доступные загрузки и обновления каждые 60 секунд. В том случае, если для локального агента имеется, что скачать или загрузить, то Panda Systems Management запускает эту загрузку индивидуально для каждого агента. В таком случае, если установочный пакет имеет размер 50 МБ, а сеть состоит из 50 устройств, то суммарный трафик при скачивании составит 2,5 ГБ.
Чтобы снизить суммарный размер загружаемого трафика, одно из сетевых устройств может выполнять роль репозитория/кеша. В этом случае только данное устройство будет скачивать пакет с Сервера, а затем уже распространять его на все требуемые сетевые устройства.
Чтобы выбранному устройству назначить роль репозитория/кеша, Вам необходимо найти данное устройство в консоли управления Panda Systems Management и на странице с подробной информацией по данному устройству в панели действий нажать на иконку Add/Remove as local cache.
В результате, выбранное устройство будет скачивать и распространять компоненты и установочные пакеты на устройства в локальной сети, что позволит значительно ускорить процесс удаленной установки ПО и существенно снизить нагрузку на полосу пропускания канала связи.
Удаленная установка ПО на устройства iOS
Облачный RMM-сервис Panda Systems Management позволяет удаленно и централизованно устанавливать требуемое ПО на мобильные устройства (планшеты и смартфоны) под управлением iOS. В этом случае процедура установки отличается от вышеописанной процедуры, т.к. данные устройства имеют определенные ограничения, связанные с источником загрузки устанавливаемого ПО (Apple Store).
Удаленная установка ПО на устройствах с Android пока не поддерживается.
Требования для установки приложений на устройства с iOS
Чтобы иметь возможность загружать приложения на устройства с iOS, Вам сперва необходимо загрузить из ComStore компонент Mobile Device Management.
При этом не забудьте, что Вам необходимо будет загрузить Ваш сертификат Apple Push Notification. Как это сделать – мы писали в предыдущей статье по управлению мобильными устройствами.
После этого Вы сможете добавить требуемые для внедрения приложения в список приложений Application List. Для этого в основном меню консоли управления выберите раздел ComStore и в левой колонке окна в блоке App Store нажмите на иконку с плюсиком для доступа к окну выбора приложений.
В открывшемся окне Вам необходимо указать страну пользователя и ввести название приложения в текстовом поле. Нажмите кнопку Search для поиска приложений с указанием его названия, общего описания и стоимости.
У требуемых приложений нажмите кнопку Add, чтобы добавить их в список приложений Application List.
После этого выбранные компоненты появятся в списке компонентов мобильных приложений в разделе основного меню Components:
Установка приложений iOS из списка приложений
После того как Вы добавили требуемые приложения в список приложений, Вам необходимо будет создать политику управления ПО для внедрения их на устройства с iOS. Для этого в консоли управления откройте требуемый сайт (проект), профиль или весь аккаунт целиком, нажмите на закладку Manage, выберите опцию Software Management и нажмите кнопку New site policy… (или соответствующую кнопку, если выбран целиком аккаунт или профиль).
В открывшемся окне укажите название политики и нажмите кнопку Next.
Затем в окне редактирования политики выберите устройства, к которым необходимо применить данную политику, нажав на кнопку Add a target…, а также выберите приложения, которые не обходимо установить, нажав на кнопку Add an app….
После того как Вы добавили приложения, и в том случае, если какие-либо из них являются платными, нажмите на иконку с желтым карандашом у данного приложения, чтобы ввести соответствующий Redemption code.
По окончании редактирования политики нажмите кнопку Save. После этого данная политика будет показываться в списке политик. Нажмите у нее кнопку Push changes, чтобы отправить настроенные приложения на выбранные в политике устройства.
В том случае, если устройство с iOS выключено в тот момент, когда Вы нажали кнопку Push changes, то такое устройство появится в блоке Non-Compliant Devices. Чтобы данные изменения автоматически применились после того, как такое устройство снова станет доступным, нажмите зеленую иконку со стрелкой.
Заключение
В данной статье мы рассмотрели 4 стандартные ситуации удаленной и централизованной установки ПО (пакетов, файлов) на требуемых устройствах Windows, Linux, Mac, а также рассказали о том, как можно удаленно и централизованно устанавливать приложения на мобильные устройства с iOS. Для решения данных задач мы использовали облачный RMM-сервис Panda Systems Management.
Причем мы рассмотрели достаточно простые случаи. Очевидно, что сценарии могут быть значительно сложнее. Например, установка требуемого образа ПО на новые устройства, плановая переустановка ПО при смене операционной системы, либо какие-то другие условия, которые могут как триггеры запускать соответствующие задачи на удаленную и централизованную установку ПО.
Как видите, чем больше в ИТ-сети компьютеров и устройств, тем более незаменимым будет инструмент такой удаленной и централизованной установки. Он позволяет автоматизировать данную задачу и значительно сэкономить время ИТ-специалиста на внедрение ПО.
Современные RMM-решения являются эффективными инструментами для решения подобных задач. И, кстати, еще очень многих других
Добивайтесь большего, делая меньше!
I previously covered how to silently install a MSI. The next thing an administrator wants to do is install it on a remote system. That is the logical next step. This isn’t always the easiest task for someone new to PowerShell.
Index
- Index
- Introduction
- Running installers remotely
- Installing from a remote location
- The double hop problem
- Pre-copy using PSSession (PS 5.0)
- PowerCLI Copy-VMGuest
- Re-authenticate from the session
- Don’t use CredSSP
- Resource-based Kerberos constrained delegation
- Other approaches to consider
- Desired State Configuration
- Web download
- Install with Package Management
- Install with Chocholatey
- Internal repository
- In closing
Introduction
To keep these samples cleaner, I am going to use an imaginary installer that is not an MSI but the approach is the same. The main way to execute remote commands is with PowerShell remoting using the Enter-PSSession
or Invoke-Command
cmdlets. I am assuming that you already have PSRemoting working in your environment. If you need help with that, consult the Secrets of PowerShell Remoting ebook.
I am also using Invoke-Command
in all my examples because that is what you would use in your scripts.
Running installers remotely
If you already have the file on the remote system, we can run it with Invoke-Command
.
Invoke-Command -ComputerName server01 -ScriptBlock {
c:\software\installer.exe /silent
}
There are two important details to be aware of right away.
The first detail is that you need to maintain a remote session while the installer is running. If the installer does not block execution (it returns control back to the shell while it executes), your script may finish before the installer finishes. This will cancel the install as it closes the remote session.
You will need to call Start-Process -Wait
if you are having that issue.
Invoke-Command -ComputerName server01 -ScriptBlock {
Start-Process c:\windows\temp\installer.exe -ArgumentList '/silent' -Wait
}
This brings us to our second important detail. The install needs to be truly silent. Remote sessions are non-interactive. That means that they cannot popup or show windows. This will either cause the program to fail because it cannot show the window or it will cause the installer to hang because it expects someone to click a button that you have no way to click.
Installing from a remote location
Most of the time if you are running installers on a remote system, you have the installer on a network share (UNC path). At first glance, this looks like it should work:
# Incorrect approach
Invoke-Command -ComputerName server01 -ScriptBlock {
\\fileserver\share\installer.exe /silent
}
This can be the source of a lot of headaches. Ideally you want to run the installer from a UNC path, but you discover that it does not work.
Trying to copy the file inside the remote command give you the same problem.
# Incorrect approach
Invoke-Command -ComputerName server01 -ScriptBlock {
Copy-Item \\fileserver\share\installer.exe c:\windows\temp\
}
# Access denied or file does not exist
Everything tells you that the file either does not exist or you have no permissions to the file. This is kind of a false message because it does exist and you have file access rights. The issue is that your remote session does not have those same rights.
The double hop problem
This is the double hop problem. The credential used to authenticate with server01
cannot be used by server01
to authenticate to fileserver
. Or any other network resources for that matter. That second hop is anything that requires authentication that is not on the first remote system.
We can either pre-copy the file or re-authenticate on the remote end.
I will use these place holder variables in the rest of the examples.
$file = '\\fileserver\share\installer.exe'
$computerName = 'server01'
The obvious first approach is to use the administrator share of the remote system to push content to a location we can access. Here I place it in the windows temp folder then remotely execute it.
Copy-Item -Path $file -Destination "\\$computername\c$\windows\temp\installer.exe"
Invoke-Command -ComputerName $computerName -ScriptBlock {
c:\windows\temp\installer.exe /silent
}
Pre-copy using PSSession (PS 5.0)
There is a new feature added in Powershell 5.0 that allows you to copy files using a PSSession. So create a PSSession and copy the file over it using the syntax below. A cool thing about this approach is that with Powershell 5.0, you can create a PSSession to a guest VM over the VM buss (instead of over the network) and you can still copy a file to it.
$session = New-PSSession -ComputerName $computerName
Copy-Item -Path $file -ToSession $session -Destination 'c:\windows\temp\installer.exe'
Invoke-Command -Session $session -ScriptBlock {
c:\windows\temp\installer.exe /silent
}
Remove-PSSession $session
While you can run Invoke-Command
on multiple computers at once, be aware that Copy-Item -ToSession
only works on a single session.
PowerCLI Copy-VMGuest
You can use PowerCli to copy files to a vSphere guest with the Copy-VMGuest CmdLet.
$VM = Get-VM $computername
Copy-VMGuest -Source $file -Destination 'c:\windows\temp\installer.exe' -VM $VM
Re-authenticate from the session
It actually is easy to re-authenticate in the remote session. Create a credential object and pass it into your Invoke-Command
. Then use that credential to create a New-PSDrive
. Even if you don’t use that new drive mapping, it will establish authentication for your UNC path to work.
$credential = Get-Credential
$psdrive = @{
Name = "PSDrive"
PSProvider = "FileSystem"
Root = "\\fileserver\share"
Credential = $credential
}
Invoke-Command -ComputerName $computerName -ScriptBlock {
New-PSDrive @using:psdrive
\\fileserver\share\installer.exe /silent
}
I used two tricks in that example that I need to point out if you have not seen them before. The first is splatting where I place arguments into a hashtable and use the @
operator to pass them to the CmdLet. The second is the $using:
scope to get a variable from my local session into that remote scriptblock. I combine both of them when I execute this command New-PSDrive @using:psdrive
.
Don’t use CredSSP
I can’t talk about the double hop problem without mentioning CredSSP. The most common solution you will find on-line if you Google the double hop problem is to enable CredSSP. Even Jeffery Snover has an old article recommending it. The general community has moved away from that as a solution because it puts your environment at risk. The issue with CredSSP is that your administrator credential gets cached on the remote system in a way that gives attackers easy access to it.
For more details see this great write up: Accidental Sabotage: Beware of CredSSP
Resource-based Kerberos constrained delegation
But there is a better solution called Resource-based Kerberos constrained delegation. constrained delegation in Server 2012 introduces the concept of controlling delegation of service tickets using a security descriptor rather than an allow list of SPNs. This change simplifies delegation by enabling the resource to determine which security principals are allowed to request tickets on behalf of another user. See PowerShell Remoting Kerberos Double Hop Solved Securely for the details.
Here is a quick snip of code showing how it works.
# For ServerC in Contoso domain and ServerB in other domain
$ServerB = Get-ADComputer -Identity ServerB -Server dc1.alpineskihouse.com
$ServerC = Get-ADComputer -Identity ServerC
Set-ADComputer -Identity $ServerC -PrincipalsAllowedToDelegateToAccount $ServerB
#To undo the configuration, reset ServerC’s attribute to null.
Set-ADComputer -Identity $ServerC -PrincipalsAllowedToDelegateToAccount $null
Other approaches to consider
That covers the most common approaches that administrators take to solving this problem. I do have a few more ideas for you to take into consideration. These approaches are outside the scope of this post to go into the implementation details, but I wanted you to be aware of them.
Desired State Configuration
You can use DSC to deploy and install your software. The easy stuff in DSC is very easy and you would learn a lot going down this path. You will need a pull server (that is easy to set up) for this one.
Deciding how to get the installer to the target system is the hard part with DSC. If you set up certificates, then you can provide credentials to a file share for straight file copy. Or you can create a custom DSC Resource and place the files in it. The target system would download it from the pull server like it would other resources.
You can combine it with one of these next ideas.
Web download
You can pull the file off of an external or internal webserver before you install it.
Invoke-WebRequest $url -OutFile 'c:\windows\temp\installer.exe' -UseBasicParsing
Install with Package Management
Windows has introduced pakage management into Windows that can be used to install packages from online repositories.
Install-Package $PackageName
Install with Chocholatey
Or you could use the Chocholatey.org package manager. The Microsoft package manager supports Chocholatey as a source but I have found the occasional installer that needs to be ran with choco install
instead.
choco install $PackageName
Internal repository
You can set up a nuget repository and use the new package management commands to deploy applications. If you have an internal dev team, this is something they may have already set up.
Install-Package $PackageName -Source MyRepoName
In closing
The first half of this post answers the immediate question as to why you may be struggling to get software to install remotely.
If your question was “how should I be installing software?” then your focus should shift to package management. It is still new to the Windows ecosystem, but this is the direction that Windows is headed.
You have plenty of options to choose from. Pick what works best for your current situation.