Ako skontrolovať verziu, aktualizovať alebo odstrániť Java pomocou PowerShell?

Java Runtime Environmen (JRE) sa bežne používa na spúšťanie rôznych podnikových aplikácií napísaných v jazyku Java. Niektoré programy však vyžadujú, aby sa spustila určitá verzia Java a v iných verziách nemusia fungovať správne. V tomto článku sa zameriame na to, ako zistiť, ktoré verzie jazyka Java sú nainštalované v počítačoch používateľov vo vašej sieti, ako aj ako odstrániť alebo aktualizovať verziu JRE pomocou PowerShell..

obsah:

  • Ako zistiť nainštalovanú verziu Java v systéme Windows?
  • Ako nájsť verziu Java z PowerShell?
  • PowerShell: Získajte verziu Java na vzdialených počítačoch
  • Skript PowerShell na odinštalovanie všetkých verzií Java
  • Ako sťahovať inštaláciu Java JRE pomocou PowerShell?

Ako zistiť nainštalovanú verziu Java v systéme Windows?

Ak do svojho počítača zadáte číslo verzie Java, môžete si nainštalovať číslo verzie Java.Jáva'vo vyhľadávacom poli systému Windows 10 a spustite applet java.

V otvorenom okne „O Java“ sa zobrazí aktuálna verzia JRE. V mojom prípade to tak je Aktualizácia Java verzie 8 231 (zostava 1.8.0_231-b11). Venujte pozornosť hodnote zostavenia JRE. Vo všetkých verziách Java je označený začiatok 1, potom hlavné číslo verzie JRE (mám toto 8), potom číslo aktualizácie.

Aktuálnu verziu Java nájdete aj na paneli „Programy a súčasti systému Windows“ (Win + R -> appwiz.cpl).

Aktuálnu verziu Java môžete zobraziť z príkazového riadku. Spustite cmd.exe a spustite príkaz:

java -verzia

java verzia "1.8.0_231" Java (TM) SE Runtime Environment (build 1.8.0_231-b11) Klientský softvér Java HotSpot (TM) (build 25.231-b11, kombinovaný režim) 

Ako nájsť verziu Java z PowerShell?

Verziu Java vo svojom počítači nájdete pomocou PowerShell. Jednoducho si môžete skontrolovať verziu spustiteľného súboru java.exe (cesta k nemu je pri inštalácii JRE SE do počítača zapísaná do premenných prostredia). Vypíšeme verziu súboru java:

Get-Command Java | Vyberte verziu objektu

Môžete zobraziť podrobné informácie o verzii, aktualizácii a vydaní jazyka Java:

Get-Command java | Vyberte objekt - rozšírená verzia softvéru

Revízia veľkých menších stavov ----- ----- ----- -------- 8 0 2310 11 

Ak potrebujete získať hodnotu reťazca verzie Java pre použitie v skriptoch, použite:

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

Verziu Java nájdete aj prostredníctvom triedy WMI, ktorá obsahuje zoznam nainštalovaných programov v systéme Windows:

Get-WmiObject -Class Win32_Product -Filter "Názov ako '% Java%'"

Identifikačné číslo: 26A24AE4-039D-4CA4-87B4-2F32180231F0 Názov: Aktualizácia Java 8 231 Dodávateľ: Oracle Corporation Verzia: 8.0.2310.11 Popis: Java 8 Aktualizácia 231 Identifikačné číslo: 4A03706F-666A-4037-7777-5F2748764D10 Názov: Java Predajca automatických aktualizácií: Oracle Corporation Verzia: 2.8.231.11 Titulok: Automatické aktualizácie Java

Získané ID možno v budúcnosti použiť na správne odstránenie JRE.

Ak chcete zobraziť iba verzie Java a potrebujete vylúčiť Java Auto Updater, použite príkaz:

Get-WmiObject -Class Win32_Product -Filter "Meno ako '% Java%' a nie meno ako '% Java Auto Updater%'" | Vyberte položku -Rozbaliť verziu

PowerShell: Získajte verziu Java na vzdialených počítačoch

Ak chcete vykonať inventár verzií Java používaných na počítačoch alebo serveroch vo vašej doméne, môžete použiť nasledujúci skript PowerShell. Tento skript môže vzdialene vyhľadávať server zo zoznamu zadaného manuálne, načítať zoznam z textového súboru. Zoznam serverov alebo počítačov môžete získať aj z AD pomocou cmdlet Get-ADComputer z modulu RSAT-AD-PowerShell..
# Skript PowerShell na kontrolu verzie Java SE (JRE) na vzdialených počítačoch / serveroch

# Skontrolujte verziu Java zo zoznamu počítačov

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

# Skontrolujte verziu Java podľa zoznamu serverov v textovom súbore

# $ computers = Get-content C: \ PS \ ServerList.txt

# Získajte verziu Java na všetkých doménových serveroch

$ computers = ((get-adcomputer -Filter enabled -eq "true" - a OperatingSystem -Like '* Windows Server *'). name) .tostring ()

Get-WmiObject -Class Win32_Product -ComputerName $ computers -Filter "Meno ako '% Java%' a nie meno ako '% Java Auto Updater%'" | Vyberte __Server, Version

Vo výsledku získate tabuľku so zoznamom počítačov / serverov a verziou Java na nich.

V mojom prípade som pri kontrole verzie Java na počítačoch našiel 35 rôznych verzií JRE!

Skript PowerShell na odinštalovanie všetkých verzií Java

Prečo je potrebné odinštalovať predchádzajúce verzie Java v systéme Windows?

  • Pred inštaláciou novej verzie Java je vhodné odinštalovať všetky predchádzajúce verzie. Rovnako ako u všetkých ostatných produktov v jazyku Java je funkčnosť neustále aktualizovaná a kritické zraniteľné miesta sú opravené. Ak máte nainštalovanú staršiu verziu jazyka Java, vystavujete svoj počítač riziku infekcie a zneužitia známych a 0-dňových zraniteľností. Java má vstavaný mechanizmus automatickej aktualizácie, ale z rôznych dôvodov ju môžu správcovia zakázať v doménach.
  • Na používanie Java JRE nemáte komerčné predplatné. Od roku 2019 spoločnosť Oracle zmenila licenčnú politiku Java. Ak teraz chcete používať staršie verzie Oracle JDK (Java SE), musíte si kúpiť platené predplatné. Toto sa týka všetkých vydaní Java JRE po 16. apríli 2019 (začínajúc aktualizáciou Java 8 SE 211). Poskytuje sa dlhodobá podpora pre komerčné verzie Java SE (aktualizácia bola vydaná 5 rokov po vydaní). Zadarmo verzia Java - Otvorte jdk (distribuované pod GPL), musíte ju aktualizovať každých šesť mesiacov. Ďalšou nevýhodou Otvorte jdk - zatiaľ neexistujú žiadne normálne inštalačné nástroje pre Windows. Musíte si stiahnuť a nainštalovať Open JDK ručne. Pri inštalácii Open JDK pomocou manažéra balíkov Chocolatey existuje jedna prijateľná možnosť: choco install openjdk

Nasledujúci skript PowerShell sa dá použiť na odstránenie všetkých nainštalovaných verzií Java v počítači.

$ jre_installed = Get-WmiObject -Class Win32_Product -Filter "Meno ako '% Java%'"
$ jre_installed.Uninstall ()

Vyššie uvedený príkaz na odstránenie je však založený na WMI a napriek jeho jednoduchosti funguje pomerne pomaly.

Namiesto toho môžete získať zoznam nainštalovanej Java z registra a odstrániť všetky nájdené verzie Java produktom GUID produktu, ktorý sa vygeneruje pri inštalácii softvéru prostredníctvom MSI.

#PowerShell skript na odstránenie všetkých verzií Java SE (JRE) v počítači
$ uninstall32 = gci "HKLM: \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall" | foreach gp $ _. PSPath | ? $ _-like "* Java *" | vyberte možnosť UninstallString
$ uninstall64 = gci "HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall" | foreach gp $ _. PSPath | ? $ _-like "* Java *" | vyberte možnosť UninstallString
# Odstránenie 64 bitovej verzie Java
if ($ uninstall64)
$ uninstall64 = $ uninstall64.UninstallString -Replace "msiexec.exe", "" -Replace "/ I", "" -Replace "/ X", ""
$ uninstall64 = $ uninstall64.Trim ()
Napíšte „Odinštalovanie ...“
start-process "msiexec.exe" -arg "/ X $ uninstall64 / qb" -Wait

# Odstránenie 32 bitových verzií Java
if ($ uninstall32)
$ uninstall32 = $ uninstall32.UninstallString -Replace "msiexec.exe", "" -Replace "/ I", "" -Replace "/ X", ""
$ uninstall32 = $ uninstall32.Trim ()
Napíšte „Odinštalovanie všetkých verzií Java SE ...“
start-process "msiexec.exe" -arg "/ X $ uninstall32 / qb" -Wait


Skripty PowerShell z tohto článku sú dostupné v mojom úložisku na stránke GitHub https://github.com/winadm/posh/tree/master/Java..

Ako sťahovať inštaláciu Java JRE pomocou PowerShell?

Nasledujúci skript PowerShell vám umožňuje automaticky sťahovať najnovšiu verziu distribúcie Java (môžete si ju stiahnuť offline alebo online inštalátor) z oficiálnej stránky a nainštalovať ju do počítača používateľa. Tým potlačíme požiadavku reštartu a vypneme automatické aktualizácie Java.

Na stiahnutie inštalačného súboru z webu použite cmdlet Invoke-WebRequest.

#PowerShell skript na automatické stiahnutie a inštaláciu najnovšej verzie Java SE (JRE) do počítača
[Net.ServicePointManager] :: SecurityProtocol = [Net.SecurityProtocolType] :: Tls12
# stiahnuť online inštalátor Java
$ URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % [regex] :: zápasy ($ _, '(? :)'). Skupiny [1] .Hodnota
# stiahnuť offline inštalátor Java
# $ URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % [regex] :: zápasy ($ _, '(? :)'). Skupiny [1] .Hodnota
Invoke-WebRequest -UseBasicParsing -OutFile jre8.exe $ URL
Start-Process. \ Jre8.exe '/ s REBOOT = 0 SPONZOROV = 0 AUTO_UPDATE = 0' - čakať
echo $?

Ak je počítač za serverom proxy, musíte nakonfigurovať program PowerShell na prístup na internet prostredníctvom servera proxy.

Prvý riadok v skripte sa pridá na prepnutie na protokol TLS 1.2. Inak, keď som začal, dostal som chybu:

Invoke-WebRequest: Žiadosť bola prerušená: Nepodarilo sa vytvoriť zabezpečený kanál SSL / TLS.

Skript automaticky stiahne inštalačný súbor Java, uloží ho na disk ako jre8.exe a nainštaluje JRE.