Cómo verificar o actualizar su versión de Java en Windows mediante PowerShell

Cómo comprobar, desinstalar y actualizar Java Runtime mediante PowerShell y métodos manuales

Trabajar con versiones de Java en tu equipo Windows puede ser frustrante, sobre todo cuando las aplicaciones no se ejecutan debido a una versión de Java incorrecta o desactualizada. Esta guía explica cómo comprobar qué versión de Java tienes instalada, cómo obtener esa información de forma remota a través de tu red e incluso cómo eliminar versiones antiguas que puedan estar presentes. No voy a mentir, algunas tareas pueden ser lentas o un poco complicadas, sobre todo con los instaladores de Java más recientes que dependen de páginas web Java cargadas mediante JavaScript. Pero comprender los comandos y el proceso ayuda a mantener todo bajo control.

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

La mayoría de la gente simplemente ejecuta java -versionel Símbolo del sistema, que es una forma rápida de ver lo que está instalado. Normalmente, obtendrás un resultado como este:

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) 

Si esto no proporciona mucha información o Java no está instalado, es posible que no esté en PATH o que no esté instalado. Por otro lado, abrir Búsqueda de Windows y escribir Java o consultar Panel de control > Programas > Programas y características también puede ayudarte a encontrar la información, especialmente si quieres la información de la versión de la interfaz gráfica.

Comprobar la versión de Java mediante PowerShell

PowerShell ofrece una forma práctica de obtener información de Java, especialmente si necesita hacerlo en varias PC sin tener que teclear demasiado. Ejecute este comando:

Get-Command java | Select-Object -ExpandProperty Version

Esto le proporciona directamente la cadena de versión, como «1.8.0.261».Para obtener más detalles, incluyendo la información del proveedor, pruebe:

Get-Command java | Select-Object -ExpandProperty "FileVersion"

Para obtener información más detallada sobre el Java instalado, puede consultar el Instrumental de Administración de Windows (WMI).Este obtiene datos de los programas instalados, por lo que resulta útil para confirmar exactamente qué versiones de Java están instaladas en el sistema:

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

Tenga en cuenta que consultar Win32_Product puede ser lento y, en ocasiones, provocar la reconfiguración de las aplicaciones. Es un poco extraño, pero así es Windows. La salida mostrará todos los productos relacionados con Java, incluyendo actualizaciones y actualizadores automáticos. Para filtrar solo el entorno de ejecución principal de Java, utilice:

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

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

Si se administra una red o servidores grandes, PowerShell resulta realmente útil. Con los permisos adecuados, se puede obtener información de Java de varias máquinas remotas sin tener que acceder manualmente a cada una por SSH. Aquí tienes una idea básica:

# List of computers; can be from a text file or manually entered $computers = @('server1', 'server2', 'server3') # Or, load from a file: # $computers = Get-Content -Path 'C:\Scripts\ServerList.txt' # Check Java versions remotely Get-WmiObject -Class Win32_Product -ComputerName $computers -Filter "Name like '%Java%' and not Name like '%Java Auto Updater%'" | Select-Object __Server, Name, Version 

Si te interesa, usar Get-ADComputer de las herramientas RSAT puede generar una lista de equipos unidos al dominio, que puedes usar en este script. Ten en cuenta que, en un dominio, pareció encontrar unas 24 versiones diferentes de Java, lo cual es una locura, pero no es sorprendente dada la cantidad de actualizaciones que suelen estar disponibles.

Script de PowerShell para desinstalar todas las versiones de Java

Eliminar versiones antiguas de Java antes de instalar una nueva es una decisión inteligente. Probablemente no quieras tener un montón de JRE inseguros o desactualizados, especialmente con el cambio en las licencias y el comportamiento de actualización automática de Java. Aquí tienes algunas maneras de eliminar todas las instalaciones de Java, ya sea remota o localmente.

Primero, una forma sencilla (pero lenta) es utilizar:

$jre_installed = Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%'" $jre_installed | ForEach-Object { $_. Uninstall() }

Esto funciona, pero sí, la desinstalación basada en WMI puede ser lenta. Una mejor manera es buscar en el registro los GUID exactos del producto, lo que agiliza y facilita la desinstalación. Aquí tienes un script básico que busca cadenas de desinstalación en el registro:

# Find all Java-related uninstall strings in registry $uninstallPaths64 = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" $uninstallPaths32 = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" $javaKeys64 = Get-ChildItem -Path $uninstallPaths64 | Get-ItemProperty | Where-Object { $_. DisplayName -like "*Java*" } $javaKeys32 = Get-ChildItem -Path $uninstallPaths32 | Get-ItemProperty | Where-Object { $_. DisplayName -like "*Java*" } # Loop through 64-bit uninstall strings foreach ($key in $javaKeys64) { if ($key. UninstallString) { $uninstallCmd = $key. UninstallString -replace "/I", "/X" -replace "/i", "/x" Write-Output "Uninstalling: $($key. DisplayName)" start-process -FilePath "msiexec.exe" -ArgumentList "/X", "$uninstallCmd", "/qb" -Wait } } # Repeat for 32-bit foreach ($key in $javaKeys32) { if ($key. UninstallString) { $uninstallCmd = $key. UninstallString -replace "/I", "/X" -replace "/i", "/x" Write-Output "Uninstalling: $($key. DisplayName)" start-process -FilePath "msiexec.exe" -ArgumentList "/X", "$uninstallCmd", "/qb" -Wait } }

De esta forma, busca todas las versiones de Java y realiza una desinstalación silenciosa, sin que aparezca la interfaz gráfica. Asegúrate de ejecutar PowerShell como administrador; si desinstalas de forma remota, necesitas los permisos adecuados.

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

Obtener el instalador de Java más reciente e implementarlo automáticamente es genial, pero también un poco lioso últimamente. Normalmente, se crea un script para la descarga y se ejecuta el instalador con indicadores silenciosos. Así:

# Ensure TLS 1.2 is enabled for the download [Net. ServicePointManager]::SecurityProtocol = [Net. SecurityProtocolType]::Tls12 # URL of Java's online download page (which is now a problem since Oracle changed how the download links work) # You might need to get the direct link manually or parse the page, but that’s a pain # Here's a placeholder for an offline installer $installerPath = "C:\Temp\jre8.exe" # Example of download — but be aware, Oracle's website now heavily relies on JavaScript, making direct programmatic links tricky # So, you often have to manually download or use a known static link from Oracle's site # Download the offline installer from a trusted source (ex: a known URL) Invoke-WebRequest -Uri "https://download.oracle.com/otn-pub/java/jdk/8uXXX-bXX/jre-8uXXX-windows-x64.exe" -OutFile $installerPath # Run the installer silently, suppressing reboot Start-Process -FilePath "$installerPath" -ArgumentList "/s REBOOT=0" -Wait # Optional: clean up installer after install Remove-Item "$installerPath" 

En la práctica, sin embargo, la transición de Oracle a enlaces de descarga generados dinámicamente ha complicado la automatización de este proceso: el sitio web a menudo simplemente carga una página con JavaScript, que no se puede analizar fácilmente con scripts simples. Por ello, muchos han recurrido a descargas manuales o a gestores de paquetes como WinGet, que pueden facilitar la instalación de variantes de OpenJDK (como con WinGet ).

Así que, con suerte, esto te ayudará a familiarizarte con las versiones de Java, a limpiar el sistema y quizás a mantener tus redes más seguras. Es un poco lioso, pero una vez que dominas los comandos, administrar Java en Windows se vuelve un poco menos complicado.