Jak zkontrolovat verzi, upgradovat nebo odebrat Javu pomocí PowerShell?

Java Runtime Environmen (JRE) je široce používán pro spouštění různých podnikových aplikací psaných v jazyce Java. Některé programy však vyžadují spuštění určité verze Java a v jiných verzích nemusí fungovat správně. V tomto článku se podíváme na to, jak zjistit, které verze Java jsou nainstalovány v počítačích uživatelů ve vaší síti, a také jak odebrat nebo aktualizovat verzi JRE pomocí PowerShell.

Obsah:

  • Jak zjistit nainstalovanou verzi Java v systému Windows?
  • Jak najít verzi Java od PowerShell?
  • PowerShell: Získejte verzi Java ve vzdálených počítačích
  • Skript PowerShell pro odinstalaci všech verzí Java
  • Jak stáhnout instalační Java JRE pomocí PowerShell?

Jak zjistit nainstalovanou verzi Java v systému Windows?

Pokud do počítače zadáte číslo verze Java, můžete do počítače nainstalovat číslo verzejava've vyhledávacím poli Windows 10 a spusťte applet java.

Otevře se okno „O Java“, které zobrazuje aktuální verzi JRE. V mém případě to tak je Aktualizace Java verze 8 231 (sestavení 1.8.0_231-b11). Věnujte pozornost hodnotě sestavení JRE. Ve všech verzích Java je označen začátek 1, pak hlavní číslo verze JRE (mám to 8), pak číslo aktualizace.

Aktuální verzi Java můžete zjistit také na panelu „Programy a součásti systému Windows“ (Win + R -> appwiz.cpl).

Aktuální verzi Java můžete zobrazit z příkazového řádku. Spusťte cmd.exe a spusťte příkaz:

java -verze

java verze "1.8.0_231" Java (TM) SE Runtime Environment (build 1.8.0_231-b11) Java HotSpot (TM) Client VM (build 25.231-b11, smíšený režim) 

Jak najít verzi Java od PowerShell?

Verze jazyka Java ve svém počítači můžete zjistit pomocí PowerShell. Jednoduše můžete zkontrolovat verzi spustitelného souboru java.exe (cesta k němu je zapsána do proměnných prostředí při instalaci JRE SE do počítače). Vypíšeme verzi souboru java:

Get-Command Java | Select-Object Version

Můžete zobrazit podrobné informace o verzi, aktualizaci a vydání Java:

Get-Command java | Select-Object --ExpandProperty Version

Revize hlavní menší stavby ----- ----- ----- -------- 8 0 2310 11 

Pokud potřebujete získat hodnotu řetězce verze Java pro použití ve skriptech, použijte:

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

Verze Java můžete také zjistit pomocí třídy WMI, která obsahuje seznam nainstalovaných programů v systému Windows:

Get-WmiObject -Class Win32_Product -Filter "Jméno jako '% Java%'"

Identifikační číslo: 26A24AE4-039D-4CA4-87B4-2F32180231F0 Název: Aktualizace Java 8 231 Prodejce: Oracle Corporation Verze: 8.0.2310.11 Titulek: Aktualizace Java 8 231 Identifikační číslo: 4A03706F-666A-4037-7777-5F2748764D10 Název: Java Prodejce automatických aktualizací: Oracle Corporation Verze: 2.8.231.11 Titulek: Automatické aktualizace Java

Získané ID lze v budoucnu použít pro správné odstranění JRE.

Pokud chcete zobrazit pouze verze Java a potřebujete vyloučit Java Auto Updater, použijte příkaz:

Get-WmiObject -Class Win32_Product -Filter "Jméno jako '% Java%' a ne jako '% Java Auto Updater%'" | Vyberte -Rozšířit verzi

PowerShell: Získejte verzi Java ve vzdálených počítačích

Pokud chcete provést inventarizaci verzí Java používaných na počítačích nebo serverech ve vaší doméně, můžete použít následující skript PowerShell. Tento skript může vzdáleně dotazovat server ze seznamu zadaného ručně, načíst seznam z textového souboru. Seznam serverů nebo počítačů můžete také získat z AD pomocí Get-ADComputer rutiny z modulu RSAT-AD-PowerShell.
# Skript PowerShell pro kontrolu verze Java SE (JRE) na vzdálených počítačích / serverech

# Zkontrolujte verzi Java ze seznamu počítačů

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

# Zkontrolujte verzi Java podle seznamu serverů v textovém souboru

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

# Získejte verzi Java na všech doménových serverech

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

Get-WmiObject -Class Win32_Product -ComputerName $ computers -Filter "Jméno jako '% Java%' a ne jako '% Java Auto Updater%'" | Vyberte __Server, verze

Výsledkem bude talíř se seznamem počítačů / serverů a verzí Java na nich.

V mém případě jsem při kontrole verze Java na počítačích našel 35 různých verzí JRE!

Skript PowerShell pro odinstalaci všech verzí Java

Proč je třeba odinstalovat předchozí verze Java v systému Windows?

  • Před instalací nové verze Java je vhodné odinstalovat všechny předchozí verze. Stejně jako u všech ostatních produktů v Javě je funkce neustále aktualizována a opravována kritická zranitelnost. Pokud máte nainstalovanou starší verzi Java, vystavujete svůj počítač riziku infekce a zneužití známých a 0denních zranitelností. Java má vestavěný mechanismus automatické aktualizace, ale z různých důvodů jej mohou správci zakázat v počítačích domény.
  • Pro použití Java JRE nemáte komerční předplatné. Od roku 2019 společnost Oracle změnila licenční politiku Java. Nyní, pokud chcete používat starší verze Oracle JDK (Java SE), musíte si zakoupit placené předplatné. To platí pro všechna vydání Java JRE po 16. dubnu 2019 (počínaje aktualizací Java 8 SE 211). Dlouhodobá podpora je poskytována komerčním verzím Java SE (aktualizace vydána 5 let po vydání). Zdarma verze Java - Otevřete jdk (distribuované pod GPL), budete ji však muset aktualizovat jednou za šest měsíců. Další nevýhoda Otevřete jdk - zatímco pro Windows neexistují žádné běžné instalační nástroje. Musíte si stáhnout a nainstalovat Open JDK ručně. Existuje jedna přijatelná možnost instalace Open JDK pomocí správce balíčků Chocolatey: choco install openjdk

Následující skript PowerShell lze použít k odebrání všech nainstalovaných verzí Java v počítači.

$ jre_installed = Get-WmiObject -Class Win32_Product -Filter "Jméno jako '% Java%'"
$ jre_installed.Uninstall ()

Příkaz odstranění popsaný výše je však založen na rozhraní WMI a navzdory jeho jednoduchosti funguje poměrně pomalu.

Místo toho můžete získat seznam nainstalované Java z registru a odstranit všechny nalezené verze Java pomocí GUID produktu, který je generován při instalaci softwaru přes MSI.

#PowerShell skript pro odstranění všech verzí Java SE (JRE) v počítači
$ uninstall32 = gci "HKLM: \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall" | foreach gp $ _. PSPath | ? $ _-like "* Java *" | vyberte UninstallString
$ uninstall64 = gci "HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall" | foreach gp $ _. PSPath | ? $ _-like "* Java *" | vyberte UninstallString
# Odstranění 64bitové verze Java
if ($ uninstall64)
$ uninstall64 = $ uninstall64.UninstallString -Replace "msiexec.exe", "" -Replace "/ I", "" -Replace "/ X", ""
$ uninstall64 = $ uninstall64.Trim ()
Napište "Odinstalace ..."
start-process "msiexec.exe" -arg "/ X $ uninstall64 / qb" -Wait

# Odstranění 32bitové verze Java
if ($ uninstall32)
$ uninstall32 = $ uninstall32.UninstallString -Replace "msiexec.exe", "" -Replace "/ I", "" -Replace "/ X", ""
$ uninstall32 = $ uninstall32.Trim ()
Napište "Odinstalace všech verzí Java SE ..."
start-process "msiexec.exe" -arg "/ X $ uninstall32 / qb" -Wait


Skripty PowerShell z tohoto článku jsou k dispozici v mém úložišti na GitHub https://github.com/winadm/posh/tree/master/Java.

Jak stáhnout instalační Java JRE pomocí PowerShell?

Následující skript PowerShell vám umožňuje automaticky stáhnout nejnovější verzi distribuce Java (můžete si ji stáhnout offline nebo online instalační program) z oficiálního webu a nainstalovat jej do počítače uživatele. Tím potlačíme požadavek na restartování a vypneme automatické aktualizace Java.

Chcete-li stáhnout instalační soubor z webu, použijte rutinu Invoke-WebRequest.

#PowerShell skript pro automatické stažení a instalaci nejnovější verze Java SE (JRE) do počítače
[Net.ServicePointManager] :: SecurityProtocol = [Net.SecurityProtocolType] :: Tls12
# stáhnout online instalátor Java
$ URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % [[regex] :: zápasy ($ _, '(? :)'). Skupiny [1] .Hodnota
# stáhnout offline instalační program 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 SPONSORS = 0 AUTO_UPDATE = 0' -wait
echo $?

Pokud je počítač za proxy, musíte nakonfigurovat PowerShell pro přístup k Internetu přes proxy.

První řádek ve skriptu je přidán k přepnutí na protokol TLS 1.2. Jinak, když jsem začal, dostal jsem chybu:

Invoke-WebRequest: Požadavek byl přerušen: Nepodařilo se vytvořit zabezpečený kanál SSL / TLS.

Skript automaticky stáhne instalační soubor Java, uloží jej na disk jako jre8.exe a nainstaluje JRE.