Jak sprawdzić wersję, uaktualnić lub usunąć Javę za pomocą PowerShell?

Java Runtime Environmen (JRE) jest szeroko stosowany do uruchamiania różnych aplikacji korporacyjnych napisanych w Javie. Jednak niektóre programy wymagają do uruchomienia określonej wersji Java i mogą nie działać poprawnie w innych wersjach. W tym artykule przyjrzymy się, jak dowiedzieć się, które wersje Java są zainstalowane na komputerach użytkowników w Twojej sieci, a także jak usunąć lub zaktualizować wersję JRE za pomocą PowerShell.

Treść

  • Jak znaleźć zainstalowaną wersję Java w systemie Windows?
  • Jak znaleźć wersję Java z PowerShell?
  • PowerShell: pobierz wersję Java na komputerach zdalnych
  • Skrypt PowerShell do odinstalowania wszystkich wersji Java
  • Jak pobrać zainstaluj środowisko Java JRE za pomocą programu PowerShell?

Jak znaleźć zainstalowaną wersję Java w systemie Windows?

Możesz uzyskać numer wersji Java zainstalowanej na komputerze, jeśli wpiszesz „java”w polu wyszukiwania systemu Windows 10 i uruchom aplet Java.

W oknie „About Java”, które zostanie otwarte, wyświetlana jest bieżąca wersja środowiska JRE. W moim przypadku tak jest Aktualizacja Java 8 w wersji 231 (kompilacja 1.8.0_231-b11). Zwróć uwagę na wartość kompilacji JRE. We wszystkich wersjach Java wskazany jest początek 1, następnie główny numer wersji JRE (mam to 8), a następnie numer aktualizacji.

Bieżącą wersję Java można również znaleźć w panelu „Programy i składniki systemu Windows” (Win + R -> appwiz.cpl).

Możesz wyświetlić aktualną wersję Java z wiersza poleceń. Uruchom cmd.exe i uruchom polecenie:

java -version

Wersja Java „1.8.0_231” Środowisko wykonawcze Java (TM) SE (kompilacja 1.8.0_231-b11) VM VM klienta HotSpot ™ (kompilacja 25.231-b11, tryb mieszany) 

Jak znaleźć wersję Java z PowerShell?

Możesz znaleźć wersję Java na swoim komputerze za pomocą PowerShell. Możesz po prostu sprawdzić wersję pliku wykonywalnego java.exe (ścieżka do niego jest zapisywana w zmiennych środowiskowych podczas instalacji JRE SE na komputerze). Wyprowadzimy wersję pliku Java:

Get-Command Java | Wybierz wersję obiektu

Możesz wyświetlić szczegółowe informacje o wersji, aktualizacji i wydaniu Java:

Get-Command Java | Wersja Select-Object -ExpandProperty

Poważna drobne zmiany wersji ----- ----- ----- -------- 8 0 2310 11 

Jeśli chcesz uzyskać wartość ciągu wersji Java do użycia w skryptach, użyj:

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

Możesz również dowiedzieć się o wersji Java za pośrednictwem klasy WMI, która zawiera listę zainstalowanych programów w systemie Windows:

Get-WmiObject -Class Win32_Product -Filter „Nazwa jak„% Java% ””

IdentificationNumber: 26A24AE4-039D-4CA4-87B4-2F32180231F0 Nazwa: Java 8 Update 231 Producent: Oracle Corporation Wersja: 8.0.2310.11 Podpis: Java 8 Update 231 IdentyfikacjaNumber: 4A03706F-666A-4037-7777-5F2748764D10 Nazwa: Java Auto Updater Producent: Oracle Corporation Wersja: 2.8.231.11 Podpis: Java Auto Updater

Uzyskane identyfikatory można wykorzystać w przyszłości do prawidłowego usunięcia środowiska JRE.

Jeśli chcesz wyświetlić tylko wersje Java i musisz wykluczyć Java Auto Updater, użyj polecenia:

Get-WmiObject -Class Win32_Product -Filter "Nazwa jak„% Java% ”, a nie nazwa jak„% Java Auto Updater% "" | Wybierz -Rozwiń wersję

PowerShell: pobierz wersję Java na komputerach zdalnych

Jeśli chcesz zrobić spis wersji Java używanych na komputerach lub serwerach w swojej domenie, możesz użyć następującego skryptu PowerShell. Ten skrypt może zdalnie wysłać zapytanie do serwera z listy określonej ręcznie, załadować listę z pliku tekstowego. Możesz także uzyskać listę serwerów lub komputerów z AD za pomocą polecenia cmdlet Get-ADComputer z modułu RSAT-AD-PowerShell.
# Skrypt PowerShell, aby sprawdzić wersję Java SE (JRE) na zdalnych komputerach / serwerach

# Sprawdź wersję Java z listy komputerów

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

# Sprawdź wersję Java według listy serwerów w pliku tekstowym

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

# Pobierz wersję Java na wszystkie serwery domeny

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

Get-WmiObject -Class Win32_Product -ComputerName $ computers -Filter "Nazwa jak„% Java% ”, a nie nazwa jak„% Java Auto Updater% "" | Wybierz __Server, Version

W rezultacie otrzymasz tabliczkę z listą komputerów / serwerów i wersją Javy na nich.

W moim przypadku podczas sprawdzania wersji Java na komputerach znalazłem 35 różnych wersji środowiska JRE!

Skrypt PowerShell do odinstalowania wszystkich wersji Java

Dlaczego może być konieczne odinstalowanie poprzednich wersji Java w systemie Windows?

  • Przed zainstalowaniem nowej wersji Java zaleca się odinstalowanie wszystkich poprzednich wersji. Podobnie jak w przypadku wszystkich innych produktów Java, funkcjonalność jest stale aktualizowana, a krytyczne luki usuwane. Jeśli masz zainstalowaną starszą wersję Javy, narażasz komputer na ryzyko infekcji i wykorzystania znanych i zerowych luk w zabezpieczeniach. Java ma wbudowany mechanizm automatycznej aktualizacji, ale z różnych powodów administratorzy mogą ją wyłączyć na komputerach w domenie.
  • Nie masz subskrypcji komercyjnej, aby korzystać ze środowiska Java JRE. Od 2019 r. Oracle zmieniło zasady licencjonowania Java. Teraz, jeśli chcesz korzystać ze starszych wersji Oracle JDK (Java SE), musisz kupić płatną subskrypcję. Dotyczy to wszystkich wersji Java JRE po 16 kwietnia 2019 r. (Od wersji Java 8 SE Update 211). Długoterminowe wsparcie jest zapewnione dla komercyjnych wersji Java SE (aktualizacja wydana 5 lat po wydaniu). Darmowa wersja Java - Otwórz jdk (rozpowszechniany na licencji GPL), jednak będziesz musiał aktualizować go co sześć miesięcy. Kolejna wada Otwórz jdk - podczas gdy nie ma normalnych narzędzi instalacyjnych dla systemu Windows. Musisz pobrać i zainstalować Open JDK ręcznie. Jest jedna dopuszczalna opcja przy instalacji Open JDK za pomocą menedżera pakietów Chocolatey: choco install openjdk

Poniższego skryptu PowerShell można użyć do usunięcia wszystkich zainstalowanych wersji Java na komputerze.

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

Jednak omówione powyżej polecenie usuwania opiera się na WMI i pomimo swojej prostoty działa dość wolno.

Zamiast tego można uzyskać listę zainstalowanych programów Java z rejestru i usunąć wszystkie znalezione wersje Java za pomocą identyfikatora GUID produktu, który jest generowany podczas instalowania oprogramowania za pośrednictwem MSI.

#PowerShell skrypt do usunięcia wszystkich wersji Java SE (JRE) na komputerze
$ uninstall32 = gci "HKLM: \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall" | foreach gp $ _. PSPath | ? $ _-like "* Java *" | wybierz UninstallString
$ uninstall64 = gci "HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall" | foreach gp $ _. PSPath | ? $ _-like "* Java *" | wybierz UninstallString
# Usuwanie 64-bitowych wersji Java
if ($ uninstall64)
$ uninstall64 = $ uninstall64.UninstallString -Replace „msiexec.exe”, „„ -Replace ”/ I”, „-Replace” / X ”,„ ”
$ uninstall64 = $ uninstall64.Trim ()
Napisz „Odinstalowywanie ...”
start-process "msiexec.exe" -arg "/ X $ uninstall64 / qb" -Odczekaj

# Usuwanie 32-bitowych wersji Java
if ($ uninstall32)
$ uninstall32 = $ uninstall32.UninstallString -Replace "msiexec.exe", "" -Replace "/ I", "-Replace" / X ","
$ uninstall32 = $ uninstall32.Trim ()
Napisz „Odinstalowywanie wszystkich wersji Java SE ...”
start-process "msiexec.exe" -arg "/ X $ uninstall32 / qb" -Odczekaj


Skrypty PowerShell z tego artykułu są dostępne w moim repozytorium na GitHub https://github.com/winadm/posh/tree/master/Java.

Jak pobrać zainstaluj środowisko Java JRE za pomocą programu PowerShell?

Poniższy skrypt programu PowerShell umożliwia automatyczne pobranie najnowszej wersji dystrybucji Java (można pobrać offline lub instalator online) z oficjalnej strony i zainstalować ją na komputerze użytkownika. W ten sposób eliminujemy wymaganie ponownego uruchomienia i wyłączamy automatyczne aktualizacje Java.

Aby pobrać plik instalatora z witryny, użyj polecenia cmdlet Invoke-WebRequest.

#PowerShell skrypt do automatycznego pobierania i instalowania najnowszej wersji Java SE (JRE) na komputerze
[Net.ServicePointManager] :: SecurityProtocol = [Net.SecurityProtocolType] :: Tls12
# pobierz internetowy instalator Java
$ URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % [regex] :: dopasowania ($ _, '(? :)'). Grupy [1] .Wartość
# pobierz offline instalatora Java
# $ URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % [regex] :: dopasowania ($ _, '(? :)'). Grupy [1] .Wartość
Invoke-WebRequest -UseBasicParsing -OutFile jre8.exe $ URL
Rozpocznij proces. \ Jre8.exe '/ s REBOOT = 0 SPONSORZY = 0 AUTO_UPDATE = 0' - czekaj
echo $?

Jeśli komputer znajduje się za serwerem proxy, musisz skonfigurować PowerShell, aby uzyskać dostęp do Internetu za pośrednictwem serwera proxy.

Dodano pierwszą linię skryptu, aby przełączyć się na protokół TLS 1.2. W przeciwnym razie, kiedy zacząłem, wystąpił błąd:

Invoke-WebRequest: Żądanie zostało przerwane: Nie można utworzyć bezpiecznego kanału SSL / TLS.

Skrypt automatycznie pobierze plik instalacyjny Java, zapisze go na dysku jako jre8.exe i zainstaluje środowisko JRE.