Java: verifique la versión, actualice o desinstale usando PowerShell

Entorno de ejecución de Java (JRE) se utiliza ampliamente en las computadoras de los usuarios para ejecutar diferentes aplicaciones empresariales de Java. Sin embargo, algunas aplicaciones requieren la versión específica de Java y pueden funcionar incorrectamente en otras versiones. En este artículo, analizaremos cómo verificar las versiones de Java instaladas en las computadoras de su red y cómo desinstalar o actualizar JRE usando PowerShell.

¿Cómo verificar la versión de Java en Windows?

Puede obtener el número de versión de Java instalado en su computadora si ingresa java en el cuadro de búsqueda de Windows 10 y ejecute el subprograma Java.

aplicación de escritorio java llamada windows 10

En Acerca de Java ventana, se especifica la versión actual de JRE. En mi caso es Java Version 8 Update 261 (build 1.8.0_261-b12). Tenga en cuenta el valor de la compilación JRE. Todas las versiones de Java tienen 1 al principio seguido del número de la versión principal de JRE (es 8 en mi caso) y el número de actualización.

subprograma de oracle java - versión

También puede verificar la versión actual de Java en Programas y características de Windows (Win + R -> appwiz.cpl).

Java instalado en la lista de programas en Windows 10

Puede mostrar la versión actual de Java en el símbolo del sistema. Correr cmd.exe y ejecuta el comando:

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 -version cmd

Verifique la versión de Java usando PowerShell

Puede verificar la versión de Java instalada en su computadora usando PowerShell. Puede simplemente verificar la versión del archivo ejecutable java.exe (la ruta se establece en las variables de entorno cuando JRE SE está instalado en su computadora). Muestra la versión del archivo java:

Get-Command Java | Select-Object Version

Obtener el comando Java

Puede ver información detallada sobre la versión de Java, la actualización y el número de lanzamiento:

Get-Command java | Select-Object -ExpandProperty Version

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

Si desea obtener un valor de cadena de su versión de Java para usarlo en scripts, use el comando:

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

powershell verifica la versión, compilación y revisión de java

También puede averiguar su versión de Java a través de la clase WMI Win32_Product (contiene la lista de programas instalados en Windows):

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

verifique el java instalado a través de Get-WmiObject -WMI Class Win32_Product

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

Los ID se pueden usar más tarde para desinstalar correctamente JRE.

Si desea mostrar solo la versión de Java sin Java Auto Updater, use el siguiente comando:

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

PowerShell: comprobar la versión de Java en equipos remotos

Si desea que las versiones de Java se usen en todas las computadoras o servidores de su dominio, puede usar el siguiente script de PowerShell. El script puede obtener la información de todos los servidores de forma remota de acuerdo con la lista que ingrese manualmente o desde un archivo de texto. También puede obtener la lista de servidores o equipos en AD mediante el cmdlet Get-ADComputer del módulo 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:PSServerList.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

obtener la versión de Java de varias computadoras remotas

Como resultado, tendrá una tabla con la lista de computadoras / servidores y versiones de Java instaladas en ellos.

En mi caso, al verificar la versión de Java en computadoras de dominio, encontré 24 versiones diferentes de JRE.

Script de PowerShell para desinstalar todas las versiones de Java

¿Por qué es posible que deba desinstalar versiones anteriores de Java en Windows?

  • Antes de instalar una nueva versión de Java, es mejor desinstalar todas las versiones anteriores. Como en otros productos, aparecen nuevas características y las vulnerabilidades críticas se corrigen constantemente en Java. Si tiene instaladas versiones anteriores de Java, su computadora está sujeta a infección o explotación de vulnerabilidades conocidas o de día cero. Java tiene un mecanismo de actualización automática incorporado, pero por diferentes razones los administradores pueden deshabilitarlo en las computadoras del dominio.
  • No tiene una suscripción paga de Java JRE. En 2019, Oracle cambió la política de licencias de Java. Si desea utilizar versiones anteriores de Oracle JDK (Java SE), debe obtener una suscripción paga. Se refiere a todas las versiones de Java JRE posteriores al 16 de abril de 2019 (de Java 8 SE Update 211).
    Las versiones comerciales de Java SE tienen un soporte de largo plazo (las actualizaciones se publican durante 5 años desde la fecha de lanzamiento). Una versión gratuita de Java es Abrir JDK (distribuido bajo GPL), pero debe actualizarlo cada seis meses. Otro Abrir JDK La desventaja es que no tiene un instalador conveniente para Windows. Debe descargar e instalar Open JDK manualmente. Hay una buena opción para instalar Open JDK usando el administrador de paquetes Chocolatey: choco install openjdk

Puede utilizar el siguiente script de PowerShell para eliminar todas las versiones de Java instaladas en una computadora local:

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

Sin embargo, el comando de desinstalación anterior se basa en WMI y funciona lentamente.

En su lugar, puede obtener una lista de las versiones de Java instaladas del registro y desinstalarlas todas mediante el GUID de su producto generado cuando instala el software a través de MSI.

#PowerShell script to uninstall all Java SE (JRE) versions on a computer
$uninstall32 = gci "HKLM:SOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionUninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*Java*" } | select UninstallString
$uninstall64 = gci "HKLM:SOFTWAREMicrosoftWindowsCurrentVersionUninstall" | 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
}

desinstalación automática de la versión antigua de Java a través de PowerShell

¿Cómo descargar e instalar Java JRE con PowerShell?

El siguiente script de PowerShell descarga automáticamente la última versión del instalador de Java desde el sitio web oficial y lo instala en una computadora (puede descargar el instalador en línea y fuera de línea). El comando de instalación suprime la solicitud de reinicio y deshabilita las actualizaciones automáticas de Java.

# 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="http://woshub.com/java-version-check-update-remove-via-powershell/)(.*)(?:">)').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="http://woshub.com/java-version-check-update-remove-via-powershell/)(.*)(?:">)').Groups[1].Value }
Invoke-WebRequest -UseBasicParsing -OutFile jre8.exe $URL
Start-Process .jre8.exe '/s REBOOT=0 SPONSORS=0 AUTO_UPDATE=0' -wait
echo $?

La primera línea del script se agregó para usar TLS 1.2. De lo contrario, tuve el siguiente error:

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

El script descargará automáticamente un archivo de instalación de Java, lo guardará en un disco como jre8.exe e instalará.

Desafortunadamente, este método para obtener el archivo de configuración de JRE del sitio web de Oracle dejó de funcionar hace solo unas semanas. Ahora, esta página web es generada por algún script .js. Y no puedo obtener el enlace al instalador de Java. Quizás Oracle cambie esto pronto.

Artículos Interesantes