Привет. Сегодня покажу вам 2 bat скрипта, которые могут сильно облегчить жизнь, если вам в домене необходимо обновлять программное обеспечение через GPO. В моих примерах обновляются Java и Chrome, но по аналогии можно переделать для практически любых программ.
Не вижу смысла что то расписывать по этим скриптам, они довольно просты. В комментариях я указал на основные моменты, которые там происходят. Как всегда доступны они в github , если что.
И так, текст скрипта для обновления Java:
@echo off set installedVersion=180144 setlocal setlocal enabledelayedexpansion rem Путь до актуальной версии Java set jPath=\Java\jre1.8.0_144\bin\java.exe rem Определяем установленную версию Java PATH %PATH%;%JAVA_HOME%\bin\ set jver= for /f tokens^=2-5^ delims^=.-_^" %%j in ('java -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m" echo %jver%| findstr /r "[^0-9]" > nul if errorlevel 1 goto :checkVersion set javaPath=C:\Program Files%jPath% set jver= for /f tokens^=2-5^ delims^=.-_^" %%j in ('"%javaPath%" -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m" echo %jver%| findstr /r "[^0-9]" > nul if errorlevel 1 goto :checkVersion set javaPath=C:\Program Files (x86)%jPath% set jver= for /f tokens^=2-5^ delims^=.-_^" %%j in ('"%javaPath%" -fullversion 2^>^&1') do set "jver=%%j%%k%%l%%m" echo %jver%| findstr /r "[^0-9]" > nul if errorlevel 1 goto :checkVersion echo %date% %time% - cannot check java version. Installing actual version... on %computername% goto :JavaInstall :checkVersion rem Если версия ниже чем та, которая нам нужна - устанавливаем новую версию if %jver% LSS %installedVersion% ( echo version is slower. Current version is %jver%. echo Installing new Java version... goto :JavaInstall ) echo JavaVersion is actual. Copying config files... echo %date% %time% - java version is actual for %username% on %computername% goto :CopyConfigs :JavaInstall msiexec.exe /i "jre-8u144-windows-i586.msi" /qn /norestart :copyConfigs set jPath=C:\program files (x86)\java\jre1.8.0_144 rem определяем, куда установлена Java dir /A /B "C:\program files\java\jre1.8.0_144\bin\" | findstr /R ".">NUL && set jPath=C:\program files\java\jre1.8.0_144 dir /A /B "C:\program files (x86)\java\jre1.8.0_144\bin\" | findstr /R ".">NUL && set jPath=C:\program files (x86)\java\jre1.8.0_144 echo java install path %jPath% mkdir c:\Windows\Sun\Java\Deployment mkdir c:\Windows\java rem копируем конфиги Java copy "%~dp0cacerts" "%jpath%\lib\security\" /y copy "%~dp0DeploymentRuleSet.jar" "c:\windows\sun\java\deployment\" /y copy "%~dp0deployment.properties" "c:\windows\sun\java\deployment\" /y copy "%~dp0deployment.config" "c:\windows\sun\java\deployment\" /y copy "%~dp0exception.sites" "c:\windows\sun\java\deployment\" /y :EXIT echo exiting script exit
И для хрома:
@echo off setlocal setlocal enabledelayedexpansion rem Ищем путь до хрома for /f "usebackq tokens=3*" %%a in (`reg query "HKLM\software\microsoft\Windows\CurrentVersion\App Paths\chrome.exe" /s`) do ( if defined %%a do ( if defined %%b do ( set _chrome_path=%%a %%b\chrome.exe ) ) ) if not defined _chrome_path ( echo %date% %time% - cannot fined path to chrome on %computername% goto :INST_Chrome65 ) set _chrome_path=!_chrome_path:\=\\! rem опеределяем установленную версию хрома for /F "tokens=2 delims==." %%I IN ( 'wmic datafile where "name='%_chrome_path%'" get version /format:list' ) DO SET "version=%%I" if not defined version ( echo %date% %time% - unable to check Chrome version on %computername%, installing... goto :INST_Chrome65 ) rem если версия ниже, чем нужна нам, устанавливаем новую версию if %version% LSS 65 ( echo %date% %time% - current Chrome version is %version% on %computername% goto :INST_Chrome65 ) if %version% GEQ 65 ( echo chrome version is actual echo %date% %time% - chrome version is actual for %username% on %computername% goto :EXIT ) :INST_Chrome65 echo %date% %time% - chrome is installing for %username% on %computername% rem проверяем разрядность операционной системы и ставим нужную версию хрома Set OS=64 reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS=32 || set OS=64 If %OS%==64 ( msiexec /i "chrom64(65).msi" /quiet /norestart goto :exit ) msiexec /i "chrom32(65).msi" /quiet /norestart :exit endlocal exit
Как видите, скрипты очень похожи. Различия между ними только в методе опеределения версии и поиске пути до установленного приложения. В первом случае для Java мы используем встроенный ключ - java --fullversion c хромом же мы используем WMI для определения весии исполняемого файла. В определении пути, мы используем переменные среды для Java и реестр для хрома.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.
Если вам помогла статья, вы можете >>отблагодарить автора<<