Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

Môi trường thời gian chạy Java (JRE) được sử dụng rộng rãi trên máy tính người dùng để chạy các ứng dụng Java doanh nghiệp khác nhau. Tuy nhiên, một số ứng dụng yêu cầu phiên bản Java cụ thể và có thể hoạt động không chính xác trong các phiên bản khác. Trong bài viết này, chúng tôi sẽ thảo luận về cách kiểm tra các phiên bản Java được cài đặt trên các máy tính trong mạng của bạn và cách gỡ cài đặt hoặc cập nhật JRE bằng PowerShell.

Cách Kiểm tra Phiên bản Java trong Windows?

Bạn có thể nhận được số phiên bản Java được cài đặt trên máy tính của mình nếu bạn nhập java trong hộp tìm kiếm của Windows 10 và chạy ứng dụng Java.

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

Trong Giới thiệu về Java cửa sổ, phiên bản JRE hiện tại được chỉ định. Trong trường hợp của tôi, đó là Java Version 8 Update 261 (build 1.8.0_261-b12) . Lưu ý giá trị của bản dựng JRE. Tất cả các phiên bản Java đều có 1 ở phần đầu, theo sau là số lượng phiên bản JRE chính (nó là 8 trong trường hợp của tôi) và số cập nhật.

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

Bạn cũng có thể kiểm tra phiên bản Java hiện tại trong Chương trình và Tính năng của Windows (Win + R -> appwiz.cpl ).

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

Bạn có thể hiển thị phiên bản Java hiện tại trong dấu nhắc lệnh. Chạy cmd.exe và chạy lệnh:

java -version

java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) Client VM (build 25.261-b12, mixed mode, sharing)

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

Kiểm tra Phiên bản Java bằng PowerShell

Bạn có thể kiểm tra phiên bản Java được cài đặt trên máy tính của mình bằng PowerShell. Bạn chỉ có thể kiểm tra phiên bản của tệp thực thi java.exe (đường dẫn đến nó được đặt trong các biến môi trường khi JRE SE được cài đặt trên máy tính của bạn). Hiển thị phiên bản tệp java:

Get-Command Java | Select-Object Version

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

Bạn có thể xem thông tin chi tiết về phiên bản Java, số cập nhật và phát hành:

Get-Command java | Select-Object -ExpandProperty Version

Major Minor Build Revision
----- ----- ----- --------
8 0 2610 12

Nếu bạn muốn nhận một giá trị chuỗi của phiên bản Java của mình để được sử dụng trong các tập lệnh, hãy sử dụng lệnh:

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

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

Bạn cũng có thể tìm ra phiên bản Java của mình thông qua lớp WMI Win32_Product (chứa danh sách các chương trình đã cài đặt trong Windows):

Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%'"

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

IdentifyingNumber : {26A24AE4-039D-4CA4-87B4-2F32180261F0}
Name : Java 8 Update 261
Vendor : Oracle Corporation
Version : 8.0.2610.12
Caption : Java 8 Update 261

IdentifyingNumber : {4A03706F-666A-4037-7777-5F2748764D10}
Name : Java Auto Updater
Vendor : Oracle Corporation
Version : 2.8.261.12
Caption : Java Auto Updater

Các ID có thể được sử dụng sau này để gỡ cài đặt JRE một cách chính xác.

Nếu bạn chỉ muốn hiển thị phiên bản Java mà không có Trình cập nhật tự động Java, hãy sử dụng lệnh sau:

Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%' and not Name like '%Java Auto Updater%'" | Select -Expand Version

PowerShell - Kiểm tra Phiên bản Java trên Máy tính Từ xa

Nếu bạn muốn sử dụng các phiên bản Java trên tất cả các máy tính hoặc máy chủ trong miền của mình, bạn có thể sử dụng tập lệnh PowerShell sau. Tập lệnh có thể lấy thông tin từ tất cả các máy chủ từ xa theo danh sách bạn nhập thủ công hoặc từ tệp văn bản. Bạn cũng có thể lấy danh sách máy chủ hoặc máy tính trong AD bằng lệnh ghép ngắn Get-ADComputer từ mô-đun RSAT-AD-PowerShell.
# PowerShell script to check Java SE (JRE) version on remote computers
# To check Java version on the computers in the list
# $computers = @('mun-sql01,mun-fs01,mun-sql02')
# Check Java version against the list of servers in a text file
#$computers=Get-content C:\PS\ServerList.txt
# To get Java version on all Windows Servers in AD domain
$computers = ((get-adcomputer -Filter { enabled -eq “true” -and OperatingSystem -Like ‘*Windows Server*’ }).name).tostring()
Get-WmiObject  -Class Win32_Product -ComputerName $computers -Filter “Name like ‘%Java%’ and not Name like ‘%Java Auto Updater%'” | Select __Server, Version

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

Kết quả là bạn sẽ có một bảng với danh sách các máy tính / máy chủ và các phiên bản Java được cài đặt trên chúng.

Trong trường hợp của tôi, khi kiểm tra phiên bản Java trên máy tính miền, tôi tìm thấy 24 phiên bản JRE khác nhau !!!

Tập lệnh PowerShell để Gỡ cài đặt tất cả các phiên bản Java

Tại sao bạn có thể cần gỡ cài đặt các phiên bản Java trước đó trong Windows?

  • Trước khi bạn cài đặt một phiên bản Java mới, tốt hơn là bạn nên gỡ cài đặt tất cả các phiên bản trước đó. Giống như trong các sản phẩm khác, các tính năng mới xuất hiện và các khai thác quan trọng liên tục được sửa trong Java. Nếu bạn đã cài đặt các phiên bản Java cũ hơn, máy tính của bạn có thể bị lây nhiễm hoặc khai thác các lỗ hổng đã biết hoặc trong 0 ngày. Java có cơ chế tự động cập nhật tích hợp, nhưng vì những lý do khác nhau mà quản trị viên có thể tắt nó trên các máy tính trong miền.
  • Bạn không có đăng ký Java JRE trả phí. Vào năm 2019, Oracle đã thay đổi chính sách cấp phép Java. Nếu bạn muốn sử dụng các phiên bản Oracle JDK (Java SE) trước đó, bạn phải đăng ký trả phí. Nó đề cập đến tất cả các bản phát hành Java JRE sau ngày 16 tháng 4 năm 2019 (từ Bản cập nhật Java 8 SE 211).
    Các phiên bản Java SE thương mại được hỗ trợ lâu dài (các bản cập nhật được phát hành trong 5 năm kể từ ngày phát hành). Phiên bản Java miễn phí là Open JDK (được phân phối theo GPL), nhưng bạn phải cập nhật nó sáu tháng một lần. Một Mở JDK khác nhược điểm là nó không có trình cài đặt thuận tiện cho Windows. Bạn phải tải xuống và cài đặt Open JDK theo cách thủ công. Có một tùy chọn hay để cài đặt Open JDK bằng trình quản lý gói Chocolatey:choco install openjdk

Bạn có thể sử dụng tập lệnh PowerShell sau để xóa tất cả các phiên bản Java đã cài đặt trên máy tính cục bộ:

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

Tuy nhiên, lệnh gỡ cài đặt ở trên dựa trên WMI và hoạt động chậm.

Thay vào đó, bạn có thể nhận danh sách các phiên bản Java đã cài đặt từ sổ đăng ký và gỡ cài đặt tất cả chúng bằng GUID sản phẩm của họ được tạo khi bạn cài đặt phần mềm qua MSI.

#PowerShell script to uninstall all Java SE (JRE) versions on a computer
$uninstall32 = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*Java*" } | select UninstallString
$uninstall64 = gci "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*Java*" } | select UninstallString
# Uninstall 64-bit Java versions
if ($uninstall64) {
$uninstall64 = $uninstall64.UninstallString -Replace "msiexec.exe", "" -Replace "/I", "" -Replace "/X", ""
$uninstall64 = $uninstall64.Trim()
Write "Uninstalling Java ..."
start-process "msiexec.exe" -arg "/X $uninstall64 /qb" -Wait
}
# Uninstall 32-bit Java versions
if ($uninstall32) {
$uninstall32 = $uninstall32.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""
$uninstall32 = $uninstall32.Trim()
Write "Uninstalling all Java SE versions..."
start-process "msiexec.exe" -arg "/X $uninstall32 /qb" -Wait
}

Làm thế nào để Kiểm tra hoặc Cập nhật Phiên bản Java trong Windows bằng PowerShell?

Cách tải xuống và cài đặt Java JRE bằng PowerShell?

Tập lệnh PowerShell sau sẽ tự động tải xuống phiên bản mới nhất của trình cài đặt Java từ trang web chính thức và cài đặt nó trên máy tính (bạn có thể tải xuống cả trình cài đặt trực tuyến và ngoại tuyến). Lệnh cài đặt ngăn chặn yêu cầu khởi động lại và vô hiệu hóa các bản cập nhật Java tự động.

Để tải xuống tệp trình cài đặt từ trang web, lệnh ghép ngắn Invoke-WebRequest được sử dụng. Nếu máy tính của bạn có proxy, hãy định cấu hình PowerShell cho bạn để truy cập Internet thông qua máy chủ proxy.

# PowerShell script to automatically download and install the latest Java SE (JRE) version
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Download an online Java installer
$URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % { [regex]::matches($_, '(?:<a title="Download Java software for Windows Online" href=")(.*)(?:">)').Groups[1].Value }
# Download an offline Java installer
#$URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | % { [regex]::matches($_, '(?:<a title="Download Java software for Windows Offline" href=")(.*)(?:">)').Groups[1].Value }
Invoke-WebRequest -UseBasicParsing -OutFile jre8.exe $URL
Start-Process .\jre8.exe '/s REBOOT=0 SPONSORS=0 AUTO_UPDATE=0' -wait
echo $?

Dòng đầu tiên trong tập lệnh đã được thêm vào để sử dụng TLS 1.2. Nếu không, tôi đã gặp lỗi sau:

Invoke-WebRequest: The request was aborted: Could not create SSL/TLS secure channel.

Tập lệnh sẽ tự động tải xuống tệp cài đặt Java, lưu trên đĩa dưới dạng jre8.exe và cài đặt.

Thật không may, phương pháp lấy tệp thiết lập JRE từ trang web Oracle này đã ngừng hoạt động chỉ vài tuần trước. Bây giờ trang web này được tạo bởi một số tập lệnh .js. Và tôi không thể lấy liên kết đến trình cài đặt java. Có lẽ Oracle sẽ sớm thay đổi điều này.