Sneg71
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Итак, вот скрипты, позволяющие произвести удаленную установку необходимого ПО (в msi пакетах) на любое количество компов (с указанными правами) с последующим удалением устаревшей версии данного программного продукта. Сразу скажу, что реализовать это можно было многими путями, включая групповые политики, но задача стояла сделать указанное, используя только скрипты. Скрипт №1: Код: 1>nul chcp 1251 set "IntPar=%1" psexec.exe @pklist.txt -u user_name -e -d -high -cf update.cmd %IntPar% | Он получает на вход имя папки, содержащей пакет, который необходимо установить (имя папки совпадает с версией программы) и вызывает скрипт №2, скопировав его на удаленные машины, список которых находится в файле pklist.txt (ибо psexec выполняет только одну команду) и передав этому скрипту полученное на входе имя папки. Выполнение происходит с правами пользователя user_name, пароль запрашивается в процессе выполнения: Код: 1>nul chcp 1251 set "ExtPar=%1" set InstFrom="\\Server\%ExtPar%" net use t: %InstFrom% msiexec.exe /i "t:\Program.msi" /qn TRANSFORMS=t:\trans_file.mst net use t: /delete | В свою очередь второй скрипт устанавливает программу Program.msi, применяя к ней файл трансформации trans_file.mst. Скрипт №3 получает на вход версию пакета, который необходимо удалить, производит поиск в реестре, выделяет GUID устаревшего пакета и удаляет его: Код: @echo off setlocal 1>nul chcp 1251 set "ParValue=%1" set "RegBranch=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" for /f "tokens=*" %%i in ('reg query "%RegBranch%"') do call:parse "%%i" if defined id (psexec.exe @pklist.txt -u user_name -e -d -high msiexec /x%id% /qn) goto:eof :parse 2>nul reg query %1 /v "DisplayName" | 1>nul findstr /i /c:"%ParValue%" && set "id=%~nx1" | Учитывая, что список машин состоит далеко не из 2-3 ПК, то в скриптах №1 и №3 программе psexec передан параметр -d, который указывает, что не нужно ждать завершения приложения, а необходимо перейти к следующей по списку машине. В целом - все ) | Всего записей: 11 | Зарегистр. 18-02-2010 | Отправлено: 16:13 28-10-2010 | Исправлено: Sneg71, 16:57 28-10-2010 |
|