Hoe u uw Java-versie op Windows kunt controleren of upgraden met PowerShell

Hoe u Java Runtime kunt controleren, verwijderen en bijwerken met behulp van PowerShell en handmatige methoden.

Het beheren van Java-versies op je Windows-computer kan behoorlijk frustrerend zijn, vooral wanneer apps weigeren te starten vanwege een incompatibele of verouderde Java-versie. Deze handleiding laat je zien hoe je kunt controleren welke Java-versie is geïnstalleerd, hoe je die informatie op afstand via je netwerk kunt opvragen en zelfs hoe je oudere versies die mogelijk nog aanwezig zijn, kunt verwijderen. Toegegeven, sommige stappen kunnen traag of wat lastig zijn, met name bij nieuwere Java-installatieprogramma’s die afhankelijk zijn van Java-webpagina’s die via JavaScript worden geladen. Maar als je de commando’s en het proces begrijpt, houd je de zaken onder controle.

Hoe controleer ik de Java-versie in Windows?

De meeste mensen gebruiken gewoon java -versionde opdrachtprompt, wat een snelle manier is om te zien wat er geïnstalleerd is. Meestal krijg je dan een uitvoer zoals:

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) 

Als dat niet veel informatie oplevert of als Java niet is geïnstalleerd, kan het zijn dat het ontbreekt in het PATH of helemaal niet is geïnstalleerd. Terzijde, het openen van Windows Zoeken en Java typen of kijken in Configuratiescherm > Programma’s > Programma’s en functies kan ook informatie geven over de aanwezigheid van Java, met name als je de GUI-versie wilt weten.

Controleer de Java-versie met PowerShell.

PowerShell biedt een handige manier om Java-informatie op te halen, vooral als je dit op meerdere pc’s moet doen zonder steeds op het toetsenbord te hoeven drukken. Voer de volgende opdracht uit:

Get-Command java | Select-Object -ExpandProperty Version

Dit geeft je direct de versieaanduiding, bijvoorbeeld “1.8.0.261”.Voor meer details, inclusief informatie over de leverancier, probeer:

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

Voor nog gedetailleerdere informatie over de geïnstalleerde Java-versies kunt u Windows Management Instrumentation (WMI) raadplegen. WMI verzamelt gegevens van geïnstalleerde programma’s, waardoor het handig is om precies te controleren welke Java-versies er op het systeem aanwezig zijn.

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

Houd er rekening mee dat het opvragen van Win32_Product traag kan zijn en soms leidt tot herconfiguratie van apps — een beetje vreemd, maar dat is typisch Windows. De uitvoer toont alle Java-gerelateerde producten, inclusief updates en automatische updates. Om alleen de hoofd-Java-runtime weer te geven, gebruikt u:

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

PowerShell – Java-versie controleren op externe computers

Als je een groot netwerk of veel servers beheert, komt PowerShell echt van pas. Met de juiste machtigingen kun je Java-informatie van meerdere externe machines ophalen zonder dat je handmatig via SSH op elke machine hoeft in te loggen. Hier is een basisidee:

# 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 

Als je erin geïnteresseerd bent, kun je met Get-ADComputer uit de RSAT-tools een lijst genereren van computers die lid zijn van een domein, die je vervolgens in dit script kunt invoeren. Wees je er wel van bewust dat het programma op één domein maar liefst 24 verschillende Java-versies leek te vinden, wat nogal bizar is, maar niet verwonderlijk gezien het grote aantal updates dat er doorgaans is.

PowerShell-script om alle Java-versies te verwijderen

Het is verstandig om oude Java-versies te verwijderen voordat je een nieuwe installeert. Je wilt waarschijnlijk geen onveilige of verouderde JRE’s op je computer hebben staan, zeker niet met de veranderingen in Java’s licenties en automatische updates. Hieronder vind je een aantal manieren om alle Java-installaties op afstand of lokaal te verwijderen.

Een eenvoudige (maar trage) manier is om het volgende te gebruiken:

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

Dit werkt, maar inderdaad, een WMI-gebaseerde verwijdering kan traag zijn. Een betere manier is om in het register te zoeken naar de exacte GUID’s van het product, wat de verwijdering sneller en schoner maakt. Hier is een eenvoudig script dat in het register zoekt naar verwijderingsstrings:

# 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 } }

Op deze manier worden alle Java-versies opgespoord en stil verwijderd, zonder dat er een grafische interface verschijnt. Zorg er wel voor dat je PowerShell als beheerder uitvoert; als je op afstand verwijdert, heb je de juiste machtigingen nodig.

Hoe download en installeer ik Java JRE met PowerShell?

Het automatisch downloaden en implementeren van de nieuwste Java-installer is best handig, maar tegenwoordig ook een beetje omslachtig. Normaal gesproken zou je een script gebruiken om de installer te downloaden en deze vervolgens met stille uitvoeringsopties te laten draaien. Zoals dit:

# 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" 

In de praktijk heeft Oracle’s overstap naar dynamisch gegenereerde downloadlinks het automatiseren hiervan echter lastig gemaakt. De website laadt vaak simpelweg een pagina met JavaScript, wat niet gemakkelijk te verwerken is met eenvoudige scripts. Daarom kiezen velen voor handmatige downloads of het gebruik van beheerde pakketbeheerders zoals WinGet, waarmee OpenJDK-varianten soepeler geïnstalleerd kunnen worden (zoals met WinGet ).

Laten we hopen dat dit je helpt om Java-versies beter te begrijpen, de boel op te ruimen en misschien je netwerken veiliger te maken. Het is een beetje rommelig, maar als je de commando’s eenmaal onder de knie hebt, wordt het beheren van Java op Windows een stuk minder lastig.