Java Deinstallation

Java deinstallieren

$RegUninstallPaths = @(
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
)


$VersionsToKeep = @('') # Geben Sie hier die Versionen an, die Sie behalten möchten, z.B., 'Java 8 Update 341'


# Beenden Sie alle laufenden Java-Prozesse
Get-CimInstance -ClassName 'Win32_Process' | Where-Object {$_.ExecutablePath -like '*Program Files\Java*'} |
Select-Object @{n='Name';e={$_.Name.Split('.')[0]}} | Stop-Process -Force

# Beenden Sie auch Internet Explorer (optional)
Get-process -Name *iexplore* | Stop-Process -Force -ErrorAction SilentlyContinue

# Filter zum Ermitteln der zu deinstallierenden Java-Versionen
$UninstallSearchFilter = {($_.GetValue('DisplayName') -like '*Java*') -and (($_.GetValue('Publisher') -eq 'Oracle Corporation')) -and ($VersionsToKeep -notcontains $_.GetValue('DisplayName'))}

# Deinstallieren Sie unerwünschte Java-Versionen und bereinigen Sie Programmdateien
foreach ($Path in $RegUninstallPaths) {
if (Test-Path $Path) {
Get-ChildItem $Path | Where-Object $UninstallSearchFilter |
foreach {
# Überprüfen Sie, ob die Version 32-Bit oder 64-Bit ist
$is64Bit = [bool]($_.GetValue('InstallLocation') -match 'Program Files \(x86\)')
$msiexec = if ($is64Bit) {'C:\Windows\System32\msiexec.exe'} else {'C:\Windows\SysWOW64\msiexec.exe'}

Start-Process $msiexec "/X$($_.PSChildName) /qn" -Wait
}
}
}

Write-Host "Java-Deinstallation abgeschlossen."