Тихая установка программ на удалённый компьютер. Для самых маленьких
На текущий момент, когда многие зарубежные компании приостановили свою деятельность в Росси, всё более актуальным становится вопрос автоматизации рутинных рабочих процессов подручными доступными бесплатными средствами.
Предлагаю вашему вниманию статью об удалённой установке программ штатными средствами Windows 10 и бесплатными консольными утилитами.
Рассмотрим установку двух наиболее часто встречающихся типа установочных файлов .exe и .msi, на примере всеми любимого бесплатного архиватора 7-zip и браузера Google Chrome
Для начала нам потребуются актуальные дистрибутивы, которые можно скачать с официальных сайтов:
На момент написания статьи актуальной версией 7-zip являлась 21.07 (64х битный установщик для Windows)
Google Chrome будем качать в виде установочного пакеты MSI, на момент написания статьи актуальная версия 102.0.5005.63 (скачать msi установщик)
#Обратите внимание что, что сам установщик упакован в архив, с расширением .zip, и для его извлечение предварительно необходимо будет установить ранее скачанный архиватор 7-zip.
Так же нам понадобится утилита psexec, которая входит в комплект PsTools, скачать их можно тут.
Теперь скачанные нами файлы установки и утилиту psexec необходимо поместить в одну папку, пусть для удобства это будет D:\silent\7z и D:\silent\chrome
#После распаковки архива с дистрибутивом Chrome нужный нам файл будет лежать в папке \Installers\ GoogleChromeStandaloneEnterprise64.msi
##Т.к. большинство современных установок Windows 64-х разрядные, мы будем использовать файл PsExec64.exe
Теперь можно используя командную строку Windows приступить к установке программ на удалённый компьютер
#Нажимаем комбинацию клавиш wir+R, вводим CMD и жмём OK
Перейдём в каталог со скачанным 7-zip выполнив команду
c:\>cd d:\silent\7z
Расскажу подробнее как работает утилита PsExec.
В простейшем случает синтаксис нашей команды будет таким:
psexec \\компьютер [-u пользователь [-p пароль]] программа [аргументы]
Где:
\\компьютер — имя удалённого компьютера, на который мы будем устанавливать наш архиватор (у нас это user_pc)
[-u пользователь [-p пароль]]— необязательные параметры, если у вашей учётной записи есть права на установку программ или права администратора в домене. Если нет — эти параметры помогают указать имя и пароль пользователя, который обладает достаточными правами.
программа — имя исполняемого файла, (7z2107-x64.exe)
аргументы — параметры установки программы, влияющие на сам процесс установки. Ещё аргументы называют ключами.
#Например, аргумент /S — будет означать тихую установку программы, без участия пользователя на удалённом компьютере. Ключей тихой установки может быть множество, и для разных программ они могут отличаться. Подобрать их можно изучив документацию к программе, но как правило большинство из них являются универсальными.
Таким образом наша конечная команда будет выглядеть так:
PsExec64.exe \\user_pc –c 7z2107-x64.exe /S
ключ –с копирует 7z2107-x64.exe на удалённый компьютер для последующего запуска
В случае успешной установки программы в окне командной строки мы должны увидеть следующее:
7z2107-x64.exe exited on user_pc with error code 0.
error code 0 означает что программа установлена успешно.
В случае успешной установки программы в окне командной строки мы должны увидеть следующее:
7z2107-x64.exe exited on user_pc with error code 0.
error code 0 означает что программа установлена успешно.
Всё! Пользователь работающий на user_pc абсолютно незаметно для себя самого стал счастливым обладателем архиватора 7zip.
Теперь приступим к удалённой установке браузера Google Chrome, который мы скачали в виде установочного файла с расширением .msi.
Для установки MSI пакетов в windows используется утилита msiexec, которая уже установлена в операционной системе. Как правило утилита эта находится в каталоге c:\Windows\system32\msiexec.exe.
Удобнее и быстрее будет если предварительно установочный файл скопировать на целевой компьютер и запускать его оттуда удалённо. В этом нам поможет встроенная в Windows утилита xcopy. У неё очень простой синтаксис в стиле:
xcopy что_копируем куда_копируем параметры_копирования
xcopy D:\silent\Chrome\GoogleChromeStandaloneEnterprise64.msi \\user_pc\c$\Windows\Temp\ /s /e
Где:
D:\silent\Chrome\GoogleChromeStandaloneEnterprise64.msi — полный пусть к файлу установки на нашем компьютере
\\user_pc\c$\Windows\Temp\ — путь назначения для копируемого файла на удалённом компьютере
/s /e — Копирование каталогов с подкаталогами, включая пустые.
Теперь всё готово для запуска удалённой установки программы.
psexec64.exe \\user_pc c:\Windows\system32\msiexec.exe /i c:\Windows\Temp\GoogleChromeStandaloneEnterprise64.msi /qn /quiet /norestart
В первой части команды мы указываем утилите psexec64.exe имя удалённого компьютера \\user_pc и место расположение утилиты отвечающей за установку .msi файлов c:\Windows\system32\msiexec.exe (как правило она всегда находится по этому пути), далее идёт ключ /i, который означает что будет производиться именно установка программы (install), после чего мы указываем полный пусть исполняемого файла на удалённом компьютере c:\Windows\Temp\GoogleChromeStandaloneEnterprise64.msi и в конце указываем несколько ключей тихой установки:
/qn — полностью скрывает процесс установки от пользователя
/quiet — тихий режим без взаимодействия с пользователем. Все окна будут скрыты. Если после обновления понадобиться перезагрузка, то она будет произведена.
/norestart — отменяет перезагрузку, если она необходима после установки программы.
Таким образом, после запуска нашей команды тихой удалённой установки браузера Google Chrome, пользователь на удалённом компьютере ничего не заметит ровно до того момента, когда ярлык браузера появится у него на рабочем столе.
�
А если в вашей сети есть 100 компьютеров, на которые необходимо установить тот же браузер Google Chrome? Можно делать это вручную, запуская команды копирования и установки для каждого компьютера отдельно — это долгий и трудоёмкий процесс, а можно автоматизировать, написав простой скрипт и подсунув ему файл со списком компьютеров для установки.
Скрип будем писать в виде .bat файла, в котором будут последовательно исполняться команды.
В папке D:\silent\chrome создадим файлы install.txt и userspc.txt и откроем их в блокноте.
�
В файл userspc.txt заносим список ПК, на которые планируем установить Chrome, в файле не должно быть ни каких лишних символов, кроме имён ПК и символа переноса строки. Так же вместо имён можно использовать IP-адреса компьютеров. После этого файл можно сохранить и закрыть.
Теперь хорошо бы знать на какие компьютеры браузер установился успешно и на какие установка не произошла (например, компьютер мог быть выключен на момент запуска скрипта). Для этого в папке chrome создадим папку log которой создадим два файла install-good.txt и install-bad.txt, в которые скрипт будет заносить имена компьютеров с (не)успешной установкой.
�
В файле install.txt пишем следующее:
for /f %%i in (d:\silent\Chrome\userspc.txt) do (
mkdir \\%%i\c$\Windows\Temp\Chrome
xcopy D:\silent\Chrome\googlechromestandaloneenterprise64.msi \\%%i\c$\Windows\Temp\Chrome /s /e
psexec64 \\%%i c:\Windows\system32\msiexec.exe /i c:\Windows\Temp\Chrome\googlechromestandaloneenterprise64.msi /qn /quiet /norestart
�
if errorlevel 1 (
echo %%i >>D:\silent\Chrome\log\install-bad.txt
) ELSE (
echo %%i >>D:\silent\Chrome\log\install-good.txt
)
rmdir /s /q \\%%i\c$\Windows\Temp\Chrome
)
pause
Разберём построчно команды и алгоритм работы данного скрипта:
Алгоритм прост, в цикле считываем из файла userspc.txt построчно имена компьютеров, каждое имя присваивается переменной \\%%i, далее выполняются раннее составленные нами команды копирования и тихой установки Google Chrome. В конце скрипт проверяет код возвращаемой скриптом ошибки. Если скрипт вернул 0, в файл install-good.txt заноситься имя текущего компьютера, на котором была попытка установки программы. Если код ошибки другой, то компьютер заноситься в файл install-bad.txt.
�
for /f %%i in (d:\silent\Chrome\userspc.txt) do (
…
)
Цикл for предназначен для выполнения повторяющихся однотипных команд,
Рассмотрим его работу более детально. %%i — переменная, которая является счётчиком шагов цикла, писать её надо именно так, как в примере используя двойной знак процента и букву английского алфавита, одну. На каждом шаге цикла выполняются команды, записанные после слова do. Ключ /f указывает на то, что цикл будет работать с файлами. После слова in указан путь к файлу, где хранятся имена компьютеров.
Этот блок программы построчно считывает имена компьютеров и для каждого из них выполняет указанные в скобках команды.
mkdir \\%%i\c$\Windows\Temp\Chrome
mkdir — команда, предназначенная для создания каталогов. В нашем случае мы создаём папку Chrome на удалённом компьютер в папке \Windows\Temp\. Напомню, что текущее имя удалённого компьютера храниться в переменной %%i.
Как работает xcopy было рассмотрено ранее в статье, по этому на ней заострять внимание не будем.
�
psexec64 \\%%i c:\Windows\system32\msiexec.exe /i c:\Windows\Temp\Chrome\googlechromestandaloneenterprise64.msi /qn /quiet /norestart
— запускает установку Chrome на каждом отдельно взятом компьютере.
if errorlevel 1 (
echo %%i >>D:\silent\Chrome\log\install-bad.txt
) ELSE (
echo %%i >>D:\silent\Chrome\log\install-good.txt
)
if — команда, обрабатывающая какое-то логическое условие, она же оператор ветвления. Т.е. если условие заданное после if выполняется, то будет выполнена команда, следующая за условием. В противном случае будут выполнены команды следующие за оператором ELSE. Завершив работу программа возвращает код завершения, с помощью errorlevel их можно использовать в качестве условия.
echo %%i >>D:\silent\Chrome\log\install-bad.txt
echo — команда, выводящая в окно командной строки какой-то текст, так же вывод команды можно перенаправить в файл используя оператор >>. В нашем случае этой командой имена компьютеров с (не)успешной установкой заносятся в файлы логов install-bad.txt и install-good.txt.
rmdir /s /q \\%%i\c$\Windows\Temp\Chrome — действие этой команды обратно mkdir, т.е. она удалит ранее созданный нами каталог Chrome на пользовательском ПК, тем самым наведёт порядок и не оставит лишних установочных файлов забивающих собой дисковое пространство.
pause — просто оставит висеть окно командной строки, и не даст ему закрыться автоматически после завершения работы нашего скрипта.
Как видите, всё просто.
Дополнительно про типы инсталляторов и ключи тихой установки можно почитать тут.
Про тонкости работы команды xcopy тут.
Попробуйте написать самостоятельно скрипт для установки 7-zip.
Если остались вопросы с удовольствием отвечу на них в комментариях.