Bagaimana cara memeriksa versi, memutakhirkan atau menghapus Java menggunakan PowerShell?

Java Runtime Environmen (JRE) banyak digunakan untuk menjalankan berbagai aplikasi perusahaan yang ditulis dalam java. Namun, beberapa program memerlukan versi Java tertentu untuk dijalankan dan mungkin tidak berfungsi dengan benar di versi lain. Pada artikel ini, kita akan melihat cara mengetahui versi Java mana yang diinstal pada komputer pengguna di jaringan Anda, serta cara menghapus atau memperbarui versi JRE menggunakan PowerShell.

Konten:

  • Cara mengetahui versi Java yang diinstal pada Windows?
  • Cara menemukan versi Java dari PowerShell?
  • PowerShell: Dapatkan Versi Java di Komputer Jarak Jauh
  • Skrip PowerShell untuk menghapus instalasi semua versi Java
  • Cara mengunduh instal Java JRE menggunakan PowerShell?

Cara mengetahui versi Java yang diinstal pada Windows?

Anda bisa mendapatkan nomor versi Java yang diinstal di komputer Anda jika Anda mengetikkan 'java'di kotak pencarian windows 10 dan jalankan applet java.

Jendela "About Java" yang terbuka menampilkan versi JRE saat ini. Dalam kasus saya itu Pembaruan Java Versi 8 231 (build 1.8.0_231-b11). Perhatikan nilai JRE build. Di semua versi Java, awal ditunjukkan 1, maka nomor versi utama dari JRE (saya punya ini 8), lalu nomor pembaruan.

Anda juga dapat mengetahui versi Java saat ini di panel 'Program dan Komponen Windows' (Win + R -> appwiz.cpl).

Anda dapat menampilkan versi Java saat ini dari baris perintah. Jalankan cmd.exe dan jalankan perintah:

versi java

versi java "1.8.0_231" Java (TM) SE Runtime Environment (build 1.8.0_231-b11) Java HotSpot (TM) Client VM (build 25.231-b11, mode campuran) 

Cara menemukan versi Java dari PowerShell?

Anda dapat mengetahui versi Java di komputer Anda menggunakan PowerShell. Anda cukup memeriksa versi file executable java.exe (path untuk itu ditulis ke variabel lingkungan saat menginstal JRE SE di komputer Anda). Kami akan menampilkan versi file java:

Get-Command Java | Versi Select-Object

Anda dapat menampilkan informasi terperinci tentang versi, pembaruan, dan rilis Java:

Get-Command java | Select-Object -ExpandProperty Version

Major Minor Build Revision ----- ----- ----- -------- 8 0 2310 11 

Jika Anda perlu mendapatkan nilai string dari versi Java untuk digunakan dalam skrip, gunakan:

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

Anda juga dapat mengetahui versi Java melalui kelas WMI, yang berisi daftar program yang diinstal di Windows:

Dapatkan-WmiObject -Class Win32_Product -Filter "Nama seperti '% Java%'"

IdentifyingNumber: 26A24AE4-039D-4CA4-87B4-2F32180231F0 Nama: Java 8 Pembaruan 231 Vendor: Oracle Corporation Versi: 8.0.2310.11 Keterangan: Java 8 Pembaruan 231 IdentifikasiNumber: 4A03706F-666A-4037-7777-5F2748764D10 Nama: Java Vendor Pembaruan Otomatis: Oracle Corporation Versi: 2.8.231.11 Keterangan: Java Auto Updater

ID yang diperoleh dapat digunakan di masa depan untuk menghapus JRE dengan benar.

Jika Anda hanya ingin menampilkan versi Java, dan Anda perlu mengecualikan Java Auto Updater, gunakan perintah:

Dapatkan-WmiObject -Class Win32_Product -Filter "Nama seperti '% Java%' dan bukan Nama seperti '% Java Auto Updater%'" | Pilih Versi -Perbesar

PowerShell: Dapatkan Versi Java di Komputer Jarak Jauh

Jika Anda ingin melakukan inventarisasi versi Java yang digunakan pada komputer atau server di domain Anda, Anda dapat menggunakan skrip PowerShell berikut. Script ini dapat secara remote meminta server dari daftar yang ditentukan secara manual, memuat daftar dari file teks. Anda juga bisa mendapatkan daftar server atau komputer dari AD menggunakan cmdlet Get-ADComputer dari modul RSAT-AD-PowerShell.
# Skrip PowerShell untuk memeriksa versi Java SE (JRE) di komputer / server jarak jauh

# Periksa versi Java dari daftar komputer

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

# Periksa versi Java berdasarkan daftar server dalam file teks

# $ komputer = Dapatkan konten C: \ PS \ ServerList.txt

# Dapatkan versi Java di semua server domain

$ computer = ((get-adcomputer -Filter enabled -eq "true" -and OperatingSystem -Seperti '* Windows Server *'). name) .tostring ()

Dapatkan-WmiObject -Class Win32_Product -ComputerName $ computer -Filter "Nama seperti '% Java%' dan bukan Nama seperti '% Java Auto Updater%'" | Pilih __Server, Versi

Sebagai hasilnya, Anda akan mendapatkan piring dengan daftar komputer / server dan versi Java pada mereka.

Dalam kasus saya, ketika memeriksa versi Java di komputer, saya menemukan 35 versi JRE yang berbeda!

Skrip PowerShell untuk menghapus instalasi semua versi Java

Mengapa Anda mungkin perlu menghapus versi Java sebelumnya pada Windows?

  • Sebelum menginstal versi Java yang baru, disarankan untuk menghapus instalan semua versi sebelumnya. Seperti halnya semua produk lain di Jawa, fungsionalitas terus diperbarui dan kerentanan kritis diperbaiki. Jika Anda memiliki versi Java yang lebih lama diinstal, Anda membuka komputer Anda terhadap risiko infeksi dan eksploitasi kerentanan yang diketahui dan 0 hari. Java memiliki mekanisme pembaruan otomatis bawaan, tetapi karena berbagai alasan, administrator dapat menonaktifkannya di komputer domain.
  • Anda tidak memiliki langganan komersial untuk menggunakan Java JRE. Sejak 2019, Oracle telah mengubah kebijakan lisensi Java. Sekarang, jika Anda ingin menggunakan versi Oracle JDK (Java SE) yang lebih lama, Anda harus membeli langganan berbayar. Ini berlaku untuk semua rilis Java JRE setelah 16 April 2019 (dimulai dengan Java 8 SE Pembaruan 211). Dukungan jangka panjang disediakan untuk versi komersial Java SE (pembaruan dirilis 5 tahun setelah dirilis). Versi Java Gratis - Buka jdk (didistribusikan di bawah GPL), namun, Anda harus memperbaruinya setiap enam bulan sekali. Kelemahan lain Buka jdk - sementara tidak ada alat instalasi normal untuk Windows. Anda harus mengunduh dan menginstal Open JDK secara manual. Ada satu opsi yang dapat diterima dengan menginstal Open JDK menggunakan manajer paket Chocolatey: choco install openjdk

Skrip PowerShell berikut ini dapat digunakan untuk menghapus semua versi Java yang diinstal pada komputer.

$ jre_installed = Dapatkan-WmiObject -Class Win32_Product -Filter "Nama seperti '% Java%'"
$ jre_installed.Uninstall ()

Namun, perintah penghapusan yang dibahas di atas didasarkan pada WMI dan, meskipun sederhana, kerjanya cukup lambat.

Sebagai gantinya, Anda bisa mendapatkan daftar Java yang diinstal dari registri dan menghapus semua versi Java yang ditemukan oleh GUID produk, yang dihasilkan saat menginstal perangkat lunak melalui MSI.

Skrip #PowerShell untuk menghapus semua versi Java SE (JRE) di komputer
$ uninstall32 = gci "HKLM: \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall" | foreach gp $ _. PSPath | ? $ _ -seperti "* Java *" | pilih UninstallString
$ uninstall64 = gci "HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall" | foreach gp $ _. PSPath | ? $ _ -seperti "* Java *" | pilih UninstallString
# Menghapus versi 64 bit Java
if ($ uninstall64)
$ uninstall64 = $ uninstall64.UninstallString -Replace "msiexec.exe", "" -Replace "/ I", "" -Replace "/ X", ""
$ uninstall64 = $ uninstall64.Trim ()
Tulis "Copot pemasangan ..."
mulai-proses "msiexec.exe" -arg "/ X $ uninstall64 / qb" -Tunggu

# Menghapus versi 32 bit Java
if ($ uninstall32)
$ uninstall32 = $ uninstall32.UninstallString -Replace "msiexec.exe", "" -Replace "/ I", "" -Replace "/ X", ""
$ uninstall32 = $ uninstall32.Trim ()
Tulis "Copot pemasangan semua versi Java SE ..."
mulai-proses "msiexec.exe" -arg "/ X $ uninstall32 / qb" -Tunggu


Skrip PowerShell dari artikel ini tersedia di repositori saya di GitHub https://github.com/winadm/posh/tree/master/Java.

Cara mengunduh instal Java JRE menggunakan PowerShell?

Skrip PowerShell berikut memungkinkan Anda untuk secara otomatis mengunduh versi terbaru dari distribusi Java (Anda dapat mengunduhnya secara offline atau pemasang online) dari situs resmi dan memasangnya di komputer pengguna. Dengan melakukan itu, kami menekan persyaratan reboot dan mematikan pembaruan Java otomatis.

Untuk mengunduh file pemasang dari situs, gunakan cmdlet Invoke-WebRequest.

Skrip #PowerShell untuk mengunduh dan menginstal versi Java SE (JRE) secara otomatis di komputer
[Net.ServicePointManager] :: SecurityProtocol = [Net.SecurityProtocolType] :: Tls12
# unduh pemasang Java online
$ URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % [regex] :: cocok ($ _, '(? :)'). Grup [1] .Nilai
# unduh penginstal Java offline
# $ URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % [regex] :: cocok ($ _, '(? :)'). Grup [1] .Nilai
Invoke-WebRequest -UseBasicParsing -OutFile jre8.exe $ URL
Mulai-Proses. \ Jre8.exe '/ s REBOOT = 0 SPONSOR = 0 AUTO_UPDATE = 0' -tunggu
echo $?

Jika komputer berada di belakang proxy, Anda perlu mengonfigurasi PowerShell untuk mengakses Internet melalui proxy.

Baris pertama dalam skrip ditambahkan untuk beralih ke protokol TLS 1.2. Kalau tidak, ketika saya mulai, saya mendapat kesalahan:

Invoke-WebRequest: Permintaan dibatalkan: Gagal membuat saluran aman SSL / TLS.

Script akan secara otomatis mengunduh file instalasi Java, menyimpannya ke disk sebagai jre8.exe dan menginstal JRE.