Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย PowerShell ได้อย่างไร

สภาพแวดล้อมรันไทม์ Java (JRE) ใช้กันอย่างแพร่หลายในคอมพิวเตอร์ของผู้ใช้เพื่อเรียกใช้แอป Java ขององค์กรต่างๆ อย่างไรก็ตาม แอพบางตัวต้องใช้ Java เวอร์ชันเฉพาะ และอาจทำงานไม่ถูกต้องในเวอร์ชันอื่น ในบทความนี้ เราจะพูดถึงวิธีตรวจสอบเวอร์ชัน Java ที่ติดตั้งบนคอมพิวเตอร์ในเครือข่ายของคุณ และวิธีถอนการติดตั้งหรืออัปเดต JRE โดยใช้ PowerShell

จะตรวจสอบเวอร์ชัน Java ใน Windows ได้อย่างไร

คุณสามารถติดตั้งหมายเลขเวอร์ชันของ Java บนคอมพิวเตอร์ของคุณได้หากคุณป้อน java ในช่องค้นหาของ Windows 10 และเรียกใช้ Java applet

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย PowerShell ได้อย่างไร

ใน เกี่ยวกับ Java หน้าต่างระบุเวอร์ชัน JRE ปัจจุบัน ในกรณีของฉัน มันคือ Java Version 8 Update 261 (build 1.8.0_261-b12) . สังเกตค่าของการสร้าง JRE Java เวอร์ชันทั้งหมดมี 1 ในตอนต้นตามด้วยจำนวนของ JRE เวอร์ชันหลัก (คือ 8 ในกรณีของฉัน) และหมายเลขอัปเดต

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย PowerShell ได้อย่างไร

คุณยังตรวจสอบเวอร์ชัน Java ปัจจุบันได้ในโปรแกรมและคุณลักษณะของ Windows (Win+R -> appwiz.cpl )

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย PowerShell ได้อย่างไร

คุณสามารถแสดงเวอร์ชัน Java ปัจจุบันได้ในพรอมต์คำสั่ง เรียกใช้ cmd.exe และรันคำสั่ง:

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)

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย PowerShell ได้อย่างไร

ตรวจสอบเวอร์ชัน Java โดยใช้ PowerShell

คุณสามารถตรวจสอบเวอร์ชัน Java ที่ติดตั้งบนคอมพิวเตอร์ของคุณโดยใช้ PowerShell คุณสามารถตรวจสอบเวอร์ชันของไฟล์ปฏิบัติการได้ java.exe (เส้นทางไปยังมันถูกตั้งค่าในตัวแปรสภาพแวดล้อมเมื่อติดตั้ง JRE SE บนคอมพิวเตอร์ของคุณ) แสดงเวอร์ชันไฟล์จาวา:

Get-Command Java | Select-Object Version

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย PowerShell ได้อย่างไร

คุณสามารถดูข้อมูลโดยละเอียดเกี่ยวกับเวอร์ชัน Java การอัปเดตและหมายเลขรุ่น:

Get-Command java | Select-Object -ExpandProperty Version

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

หากคุณต้องการรับค่าสตริงของเวอร์ชัน Java ของคุณเพื่อใช้ในสคริปต์ ให้ใช้คำสั่ง:

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

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย PowerShell ได้อย่างไร

คุณยังสามารถค้นหาเวอร์ชัน Java ของคุณผ่านคลาส WMI Win32_Product (ประกอบด้วยรายการโปรแกรมที่ติดตั้งใน Windows):

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

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย 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

รหัสอาจถูกใช้ในภายหลังเพื่อถอนการติดตั้ง JRE อย่างถูกต้อง

หากคุณต้องการแสดงเฉพาะเวอร์ชัน Java โดยไม่มี Java Auto Updater ให้ใช้คำสั่งต่อไปนี้:

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

PowerShell – ตรวจสอบเวอร์ชัน Java บนคอมพิวเตอร์ระยะไกล

หากคุณต้องการใช้ Java เวอร์ชันบนคอมพิวเตอร์หรือเซิร์ฟเวอร์ทุกเครื่องในโดเมนของคุณ คุณสามารถใช้สคริปต์ PowerShell ต่อไปนี้ สคริปต์สามารถรับข้อมูลจากเซิร์ฟเวอร์ทั้งหมดจากระยะไกลตามรายการที่คุณป้อนด้วยตนเองหรือจากไฟล์ข้อความ คุณยังรับรายการเซิร์ฟเวอร์หรือคอมพิวเตอร์ใน AD ได้โดยใช้ Get-ADComputer cmdlet จากโมดูล 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

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย PowerShell ได้อย่างไร

ด้วยเหตุนี้ คุณจะมีตารางที่มีรายการคอมพิวเตอร์/เซิร์ฟเวอร์และเวอร์ชัน Java ติดตั้งอยู่

ในกรณีของฉัน เมื่อตรวจสอบเวอร์ชัน Java บนคอมพิวเตอร์โดเมน ฉันพบ JRE เวอร์ชันต่างๆ ถึง 24 เวอร์ชัน!!!

สคริปต์ PowerShell เพื่อถอนการติดตั้ง Java เวอร์ชันทั้งหมด

ทำไมคุณอาจต้องถอนการติดตั้ง Java เวอร์ชันก่อนหน้าใน Windows

  • ก่อนที่คุณจะติดตั้ง Java เวอร์ชันใหม่ จะดีกว่าที่จะถอนการติดตั้งเวอร์ชันก่อนหน้าทั้งหมด เช่นเดียวกับผลิตภัณฑ์อื่นๆ คุณลักษณะใหม่ปรากฏขึ้นและช่องโหว่ที่สำคัญได้รับการแก้ไขอย่างต่อเนื่องใน Java หากคุณติดตั้ง Java เวอร์ชันเก่า คอมพิวเตอร์ของคุณอาจติดไวรัสหรือหาประโยชน์จากช่องโหว่ที่รู้จักหรือ 0 วัน Java มีกลไกการอัปเดตอัตโนมัติในตัว แต่ด้วยเหตุผลต่างๆ ที่ผู้ดูแลระบบอาจปิดใช้งานบนคอมพิวเตอร์โดเมน
  • คุณไม่มีการสมัครสมาชิก Java JRE แบบชำระเงิน ในปี 2019 Oracle ได้เปลี่ยนนโยบายการออกใบอนุญาต Java หากคุณต้องการใช้ Oracle JDK (Java SE) เวอร์ชันก่อนหน้า คุณต้องสมัครใช้งานแบบชำระเงิน หมายถึง Java JRE ที่เผยแพร่หลังจากวันที่ 16 เมษายน 2019 (จาก Java 8 SE Update 211)
    เวอร์ชัน Java SE เชิงพาณิชย์มีการสนับสนุนเป็นเวลานาน (อัปเดตเผยแพร่เป็นเวลา 5 ปีนับตั้งแต่วันที่เผยแพร่) Java เวอร์ชันฟรีคือ Open JDK (เผยแพร่ภายใต้ GPL) แต่คุณต้องอัปเดตทุก ๆ หกเดือน อีก เปิด JDK  ข้อเสียคือไม่มีตัวติดตั้งที่สะดวกสำหรับ Windows คุณต้องดาวน์โหลดและติดตั้ง Open JDK ด้วยตนเอง มีตัวเลือกที่ดีในการติดตั้ง Open JDK โดยใช้ตัวจัดการแพ็คเกจ Chocolatey:choco install openjdk

คุณสามารถใช้สคริปต์ PowerShell ต่อไปนี้เพื่อลบเวอร์ชัน Java ที่ติดตั้งทั้งหมดในเครื่องคอมพิวเตอร์:

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

อย่างไรก็ตาม คำสั่งถอนการติดตั้งด้านบนใช้ WMI และทำงานช้า

คุณสามารถรับรายการเวอร์ชัน Java ที่ติดตั้งจากรีจิสทรีและถอนการติดตั้งทั้งหมดโดยใช้ GUID ผลิตภัณฑ์ที่สร้างขึ้นเมื่อคุณติดตั้งซอฟต์แวร์ผ่าน 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
}

จะตรวจสอบหรืออัปเดตเวอร์ชัน Java ใน Windows ด้วย PowerShell ได้อย่างไร

จะดาวน์โหลดและติดตั้ง Java JRE โดยใช้ PowerShell ได้อย่างไร

สคริปต์ PowerShell ต่อไปนี้จะดาวน์โหลดตัวติดตั้ง Java เวอร์ชันล่าสุดโดยอัตโนมัติจากเว็บไซต์ทางการ และติดตั้งบนคอมพิวเตอร์ (คุณสามารถดาวน์โหลดตัวติดตั้งทั้งแบบออนไลน์และออฟไลน์) คำสั่งติดตั้งจะระงับคำขอรีบูตและปิดใช้งานการอัปเดต Java อัตโนมัติ

ในการดาวน์โหลดไฟล์ติดตั้งจากเว็บไซต์ จะใช้ cmdlet ของ Invoke-WebRequest หากคอมพิวเตอร์ของคุณใช้พร็อกซี่ ให้กำหนดค่า PowerShell ให้เข้าถึงอินเทอร์เน็ตผ่านพร็อกซีเซิร์ฟเวอร์

# 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 $?

เพิ่มบรรทัดแรกในสคริปต์เพื่อใช้ TLS 1.2 มิฉะนั้น ฉันมีข้อผิดพลาดดังต่อไปนี้:

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

สคริปต์จะดาวน์โหลดไฟล์การติดตั้ง Java โดยอัตโนมัติ บันทึกลงในดิสก์เป็น jre8.exe และติดตั้ง

ขออภัย วิธีการรับไฟล์ติดตั้ง JRE จากเว็บไซต์ Oracle หยุดทำงานเมื่อไม่กี่สัปดาห์ก่อน ตอนนี้หน้าเว็บนี้สร้างโดยสคริปต์ .js บางตัว และฉันไม่สามารถรับลิงก์ไปยังตัวติดตั้งจาวาได้ บางที Oracle จะเปลี่ยนสิ่งนี้ในไม่ช้า