Как да проверите версия, надстройка или премахване на Java с помощта на PowerShell?

Java Runtime Environmentmen (JRE) се използва широко за стартиране на различни корпоративни приложения, написани на Java. Някои програми обаче изискват да се изпълни определена версия на Java и може да не работят правилно в други версии. В тази статия ще разгледаме как да разберем кои версии на Java са инсталирани на компютрите на потребителите във вашата мрежа и как да премахнете или актуализирате версия на JRE с помощта на PowerShell.

Съдържание:

  • Как да разберете инсталираната версия на Java на Windows?
  • Как да намерите версията на Java от PowerShell?
  • PowerShell: Вземете Java версия на отдалечени компютри
  • Скрипт PowerShell за деинсталиране на всички версии на Java
  • Как да изтеглите инсталирате Java JRE с помощта на PowerShell?

Как да разберете инсталираната версия на Java на Windows?

Можете да получите номера на версията на Java, инсталирана на вашия компютър, ако въведете „Ява'в полето за търсене на Windows 10 и стартирайте аплета Java.

Отварящият се прозорец „About Java“ показва текущата версия на JRE. В моя случай е така Актуализация на версия на Java версия 8 (изграждане 1.8.0_231-b11). Обърнете внимание на стойността на изграждането на JRE. Във всички версии на Java е посочено началото 1, след това основният номер на версията на JRE (имам това 8), след това номера на актуализацията.

Можете също така да разберете текущата версия на Java в панела „Програми и компоненти на Windows“ (Win + R -> appwiz.cpl).

Можете да покажете текущата версия на Java от командния ред. Пуснете cmd.exe и стартирайте командата:

java -версия

java версия "1.8.0_231" Java (TM) SE Runtime Environment (изграждане 1.8.0_231-b11) Java HotSpot (TM) клиент VM (изграждане 25.231-b11, смесен режим) 

Как да намерите версията на Java от PowerShell?

Можете да разберете версията на Java на вашия компютър с помощта на PowerShell. Можете просто да проверите версията на изпълнимия файл java.exe (пътят до него се записва в променливите на средата, когато инсталирате JRE SE на вашия компютър). Ще изведем версията на java файла:

Get-Command Java | Версия за избор на обект

Можете да покажете подробна информация за версията, актуализацията и освобождаването на Java:

Get-Command java | Select-Object -ExpandProperty Version

Ревизия на основни малки сгради ----- ----- ----- -------- 8 0 2310 11 

Ако трябва да получите низовата стойност на версията на Java за използване в скриптове, използвайте:

(Get-Command Java | Select-Object -ExpandProperty Version) .tostring ()

Можете също да разберете Java версията чрез WMI класа, който съдържа списък с инсталирани програми в Windows:

Get-WmiObject -Class Win32_Product -Filter "Име като"% Java% ""

IdentificationNumber: 26A24AE4-039D-4CA4-87B4-2F32180231F0 Име: Java 8 Актуализация 231 Доставчик: Oracle Corporation Версия: 8.0.2310.11 Надпис: Java 8 Актуализация 231 Идентифициращ номер: 4A03706F-666A-4037-7777-5F2748764D10 Име: Доставчик на автоматично актуализиране: Oracle Corporation Версия: 2.8.231.11 Надпис: Java Auto Updater

Получените идентификационни номера могат да бъдат използвани в бъдеще за правилно премахване на JRE.

Ако искате да показвате само версии на Java и трябва да изключите Java Auto Updater, използвайте командата:

Get-WmiObject -Class Win32_Product -Filter "Име като"% Java% ", а не Име като"% Java Auto Updater% "" | Изберете -Разгъване на версията

PowerShell: Вземете Java версия на отдалечени компютри

Ако искате да направите опис на версиите на Java, използвани на компютри или сървъри във вашия домейн, можете да използвате следния скрипт PowerShell. Този скрипт може да запитва дистанционно сървъра от списъка, посочен ръчно, да зареди списъка от текстов файл. Можете също да получите списък със сървъри или компютри от AD, като използвате командлета Get-ADComputer от модула RSAT-AD-PowerShell.
# PowerShell скрипт за проверка на Java SE версия (JRE) на отдалечени компютри / сървъри

# Проверете версията на Java от списъка с компютри

# $ computers = @ ('sever1, server2, server3')

# Проверете версията на Java по списък на сървъра в текстов файл

# $ computers = Получете съдържание C: \ PS \ ServerList.txt

# Вземете Java версия на всички сървъри на домейни

$ computers = ((get-adcomputer -Filter активиран -eq "true" -и OperatingSystem -подобен '* Windows Server *'. име) .tostring ()

Get-WmiObject -Class Win32_Product -ComputerName $ computers -Filter "Име като"% Java% ", а не Име като"% Java Auto Updater% "" | Изберете __Сървър, Версия

В резултат на това ще получите табела със списък на компютри / сървъри и версията на Java на тях.

В моя случай при проверка на версията на Java на компютри открих 35 различни версии на JRE!

Скрипт PowerShell за деинсталиране на всички версии на Java

Защо може да се наложи да деинсталирате предишни версии на Java на Windows?

  • Преди да инсталирате нова версия на Java, препоръчително е да премахнете всички предишни версии. Както при всички други продукти в Java, функционалността се актуализира постоянно и се отстраняват критичните уязвимости. Ако имате инсталирана по-стара версия на Java, излагате компютъра на риск от инфекция и експлоатация на известни и 0-дневни уязвимости. Java има вграден механизъм за автоматично актуализиране, но поради различни причини администраторите могат да го деактивират на компютри с домейни.
  • Нямате търговски абонамент за използване на Java JRE. От 2019 г. Oracle променя политиката за лицензиране на Java. Сега, ако искате да използвате по-стари версии на Oracle JDK (Java SE), трябва да закупите платен абонамент. Това се отнася за всички версии на Java JRE след 16 април 2019 г. (започвайки с актуализация на Java 8 SE 211). Дългосрочната поддръжка се предоставя за комерсиални версии на Java SE (актуализация излиза 5 години след пускането). Безплатна версия на Java - Отворете jdk (разпространява се под GPL), обаче ще трябва да го актуализирате веднъж на шест месеца. Друг недостатък Отворете jdk - докато няма нормални инсталационни инструменти за Windows. Трябва да изтеглите и инсталирате Open JDK ръчно. Има една приемлива опция за инсталиране на Open JDK с помощта на мениджъра на пакети Chocolatey: choco install openjdk

Следният скрипт на PowerShell може да се използва за премахване на всички инсталирани версии на Java на компютъра.

$ jre_installed = Get-WmiObject -Class Win32_Product -Filter "Име като"% Java% ""
$ jre_installed.Uninstall ()

Командата за премахване обаче, разгледана по-горе, се основава на WMI и, въпреки своята простота, работи доста бавно.

Вместо това можете да получите списък с инсталирана Java от системния регистър и да премахнете всички намерени версии на Java от GUID на продукта, който се генерира при инсталиране на софтуера чрез MSI.

#PowerShell скрипт за премахване на всички версии на Java SE (JRE) на компютър
$ uninstall32 = gci "HKLM: \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Деинсталиране" | foreach gp $ _. PSPath | ? $ _ -подобен "* Java *" | изберете UninstallString
$ uninstall64 = gci "HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall" | foreach gp $ _. PSPath | ? $ _ -подобен "* Java *" | изберете UninstallString
# Премахване на 64 битови версии на Java
ако ($ uninstall64)
$ uninstall64 = $ uninstall64.UninstallString -Заменете "msiexec.exe", "" -Заменете "/ I", "" -Заменете "/ X", ""
$ uninstall64 = $ uninstall64.Trim ()
Напишете "Деинсталиране ..."
start-process "msiexec.exe" -arg "/ X $ uninstall64 / qb" -чакайте

# Премахване на 32-битови версии на Java
ако ($ uninstall32)
$ uninstall32 = $ uninstall32.UninstallString -Заменете "msiexec.exe", "-Заменете" / I "," "-Заменете" / X "," "
$ uninstall32 = $ uninstall32.Trim ()
Напишете "Деинсталиране на всички версии на Java SE ..."
start-process "msiexec.exe" -arg "/ X $ uninstall32 / qb" -чакайте


PowerShell скриптове от тази статия са достъпни в моето хранилище в GitHub https://github.com/winadm/posh/tree/master/Java.

Как да изтеглите инсталирате Java JRE с помощта на PowerShell?

Следният скрипт на PowerShell ви позволява автоматично да изтеглите последната версия на разпространението на Java (можете да я изтеглите офлайн или онлайн инсталатор) от официалния сайт и да я инсталирате на компютъра на потребителя. По този начин потискаме изискването за рестартиране и изключваме автоматичните актуализации на Java.

За да изтеглите файла на инсталатора от сайта, използвайте командлета Invoke-WebRequest.

#PowerShell скрипт за автоматично изтегляне и инсталиране на най-новата версия на Java SE (JRE) на компютър
[Net.ServicePointManager] :: SecurityProtocol = [Net.SecurityProtocolType] :: Tls12
# изтеглете онлайн инсталатора на Java
$ URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/bg/download/manual.jsp).Съдържание | % [regex] :: съвпадения ($ _, '(? :)'). Групи [1] .Value
# изтеглете офлайн инсталатора на Java
# $ URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/bg/download/manual.jsp).Съдържание | % [regex] :: съвпадения ($ _, '(? :)'). Групи [1] .Value
Invoke-WebRequest -UseBasicParsing -OutFile jre8.exe $ URL
Start-Process. \ Jre8.exe '/ s REBOOT = 0 СПОНСОРИ = 0 AUTO_UPDATE = 0' -чакайте
ехо $?

Ако компютърът стои зад прокси, трябва да конфигурирате PowerShell за достъп до Интернет чрез прокси.

Първият ред в скрипта е добавен за преминаване към TLS 1.2 протокол. В противен случай, когато започнах, получих грешка:

Invoke-WebRequest: Заявката е прекратена: Неуспешно създаване на SSL / TLS защитен канал.

Скриптът автоматично ще изтегли инсталационния файл на Java, ще го запише на диск като jre8.exe и ще инсталира JRE.