Java Runtime Environment (JRE) उपयोगकर्ता कंप्यूटरों पर विभिन्न एंटरप्राइज़ Java एप्लिकेशन चलाने के लिए व्यापक रूप से उपयोग किया जाता है। हालांकि, कुछ एप्लिकेशन को विशिष्ट Java संस्करण की आवश्यकता होती है और अन्य संस्करणों में गलत तरीके से काम कर सकते हैं। इस लेख में हम चर्चा करेंगे कि आपके नेटवर्क में कंप्यूटरों पर इंस्टॉल किए गए Java संस्करणों की जांच कैसे करें, और PowerShell का उपयोग करके JRE को अनइंस्टॉल या अपडेट कैसे करें।
Windows में Java संस्करण कैसे जांचें?
आप Windows 10 सर्च बॉक्स में java दर्ज करके और Java एप्लेट चलाकर अपने कंप्यूटर पर इंस्टॉल किए गए Java का संस्करण नंबर प्राप्त कर सकते हैं।

About Java विंडो में, वर्तमान JRE संस्करण निर्दिष्ट होता है। मेरे मामले में, यह Java Version 8 Update 261 (build 1.8.0_261-b12) है। JRE बिल्ड के मान पर ध्यान दें। सभी Java संस्करणों की शुरुआत में 1 होता है जिसके बाद प्रमुख JRE संस्करण की संख्या होती है (मेरे मामले में 8) और अपडेट नंबर।

आप Windows Programs and Features (Win+R → appwiz.cpl) में भी वर्तमान Java संस्करण देख सकते हैं।

कमांड प्रॉम्प्ट में वर्तमान 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)

PowerShell का उपयोग करके Java संस्करण जांचें
आप PowerShell का उपयोग करके अपने कंप्यूटर पर इंस्टॉल किए गए Java संस्करण की जांच कर सकते हैं। आप केवल निष्पादन योग्य फ़ाइल java.exe का संस्करण देख सकते हैं (इसका पथ JRE SE इंस्टॉल होने पर पर्यावरण चर में सेट होता है)। Java फ़ाइल संस्करण प्रदर्शित करें:
Get-Command Java | Select-Object Version

आप 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()

आप WMI क्लास Win32_Product (जिसमें Windows में इंस्टॉल किए गए प्रोग्रामों की सूची होती है) के माध्यम से भी अपना Java संस्करण जान सकते हैं:
Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%'"

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
इन IDs का उपयोग बाद में JRE को सही ढंग से अनइंस्टॉल करने के लिए किया जा सकता है।
यदि आप केवल Java Auto Updater के बिना Java संस्करण प्रदर्शित करना चाहते हैं, तो निम्न कमांड का उपयोग करें:
Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%' and not Name like '%Java Auto Updater%'" | Select -Expand Version
PowerShell - रिमोट कंप्यूटरों पर Java संस्करण जांचें
यदि आप अपने डोमेन में सभी कंप्यूटरों या सर्वरों पर उपयोग किए जाने वाले Java संस्करण प्राप्त करना चाहते हैं, तो आप निम्न PowerShell स्क्रिप्ट का उपयोग कर सकते हैं। स्क्रिप्ट मैन्युअल रूप से दर्ज सूची या टेक्स्ट फ़ाइल से सर्वरों की सूची के अनुसार सभी सर्वरों से जानकारी दूरस्थ रूप से प्राप्त कर सकती है। आप RSAT-AD-PowerShell मॉड्यूल से Get-ADComputer cmdlet का उपयोग करके AD में सर्वरों या कंप्यूटरों की सूची भी प्राप्त कर सकते हैं।
# 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 संस्करणों के साथ एक तालिका होगी।
मेरे मामले में, डोमेन कंप्यूटरों पर Java संस्करण की जांच करते समय, मुझे 24 अलग-अलग JRE संस्करण मिले!
सभी Java संस्करणों को अनइंस्टॉल करने के लिए PowerShell स्क्रिप्ट
Windows में पिछले Java संस्करणों को अनइंस्टॉल करने की आवश्यकता क्यों हो सकती है?
- नया Java संस्करण इंस्टॉल करने से पहले, सभी पिछले संस्करणों को अनइंस्टॉल करना बेहतर होता है। अन्य उत्पादों की तरह, Java में नई सुविधाएं आती हैं और महत्वपूर्ण कारनामे लगातार ठीक किए जाते हैं। यदि आपके पास Java के पुराने संस्करण इंस्टॉल हैं, तो आपका कंप्यूटर ज्ञात या 0-day कमजोरियों के संक्रमण या शोषण के अधीन है। Java में एक अंतर्निहित ऑटो-अपडेट तंत्र है, लेकिन विभिन्न कारणों से प्रशासक इसे डोमेन कंप्यूटरों पर अक्षम कर सकते हैं।
- आपके पास पेड Java JRE सब्सक्रिप्शन नहीं है। 2019 में, Oracle ने Java लाइसेंसिंग नीति बदल दी। यदि आप पिछले Oracle JDK (Java SE) संस्करणों का उपयोग करना चाहते हैं, तो आपको एक पेड सब्सक्रिप्शन प्राप्त करना होगा। यह अप्रैल 16, 2019 के बाद के सभी Java JRE रिलीज़ को संदर्भित करता है (Java 8 SE Update 211 से)।
कमर्शियल Java SE संस्करणों में लंबे समय तक समर्थन होता है (रिलीज़ की तारीख से 5 साल तक अपडेट जारी किए जाते हैं)। एक मुफ्त Java संस्करण OpenJDK है (GPL के तहत वितरित), लेकिन आपको इसे हर छह महीने में अपडेट करना होगा। OpenJDK का एक और नुकसान यह है कि इसमें Windows के लिए सुविधाजनक इंस्टॉलर नहीं है। आपको मैन्युअल रूप से OpenJDK डाउनलोड और इंस्टॉल करना होगा। Chocolatey पैकेज मैनेजर का उपयोग करके OpenJDK इंस्टॉल करने का एक अच्छा विकल्प है:choco install openjdk
आप स्थानीय कंप्यूटर पर इंस्टॉल किए गए सभी Java संस्करणों को हटाने के लिए निम्न PowerShell स्क्रिप्ट का उपयोग कर सकते हैं:
$jre_installed = Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%'"
$jre_installed.Uninstall()
हालांकि, उपरोक्त अनइंस्टॉल कमांड WMI पर आधारित है और धीरे-धीरे काम करता है।
इसके बजाय, आप रजिस्ट्री से इंस्टॉल किए गए Java संस्करणों की सूची प्राप्त कर सकते हैं और MSI के माध्यम से सॉफ़्टवेयर इंस्टॉल करते समय उत्पन्न उनके उत्पाद GUID द्वारा उन सभी को अनइंस्टॉल कर सकते हैं।
#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
}

PowerShell का उपयोग करके Java JRE कैसे डाउनलोड और इंस्टॉल करें?
निम्न PowerShell स्क्रिप्ट आधिकारिक वेबसाइट से Java इंस्टॉलर का नवीनतम संस्करण स्वचालित रूप से डाउनलोड करती है और इसे कंप्यूटर पर इंस्टॉल करती है (आप ऑनलाइन और ऑफलाइन दोनों इंस्टॉलर डाउनलोड कर सकते हैं)। इंस्टॉल कमांड रिबूट अनुरोध को दबाती है और स्वचालित Java अपडेट को अक्षम करती है।
वेबसाइट से इंस्टॉलर फ़ाइल डाउनलोड करने के लिए, Invoke-WebRequest cmdlet का उपयोग किया जाता है। यदि आपका कंप्यूटर प्रॉक्सी के पीछे है, तो 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 के रूप में डिस्क पर सहेजेगी और इंस्टॉल करेगी।
दुर्भाग्य से, Oracle वेबसाइट से JRE सेटअप फ़ाइल प्राप्त करने की यह विधि कुछ हफ्ते पहले काम करना बंद कर दिया। अब यह वेबपेज कुछ .js स्क्रिप्ट द्वारा उत्पन्न होता है। और मुझे Java इंस्टॉलर का लिंक नहीं मिल सकता। शायद Oracle इसे जल्द ही बदल देगा।