Public/Uninstall-sqmJdbcDriver.ps1
|
function Uninstall-sqmJdbcDriver { <# .SYNOPSIS Deinstalliert den Microsoft JDBC Driver for SQL Server. .DESCRIPTION Entfernt vorhandene mssql-jdbc*.jar Dateien aus dem Standard-Installationsverzeichnis des Microsoft JDBC Driver for SQL Server. Da JDBC als JAR-Datei deployed wird (kein MSI), genuegt das Loeschen der JAR-Dateien als Deinstallation. Optionale Bereinigung des CLASSPATH-Eintrags. .PARAMETER RemoveClassPath Entfernt den CLASSPATH-Systemeintrag wenn vorhanden. Standard: $false. .EXAMPLE Uninstall-sqmJdbcDriver .EXAMPLE Uninstall-sqmJdbcDriver -RemoveClassPath .NOTES Erfordert lokale Administratorrechte fuer das Loeschen in Program Files. #> [CmdletBinding()] param( [switch]$RemoveClassPath ) $ErrorActionPreference = 'Stop' # Suchpfade fuer JDBC-Installation $searchRoots = @( "$env:ProgramFiles\Microsoft JDBC Driver*", "${env:ProgramFiles(x86)}\Microsoft JDBC Driver*", 'C:\jdbc' ) $removed = @() $notFound = $true foreach ($root in $searchRoots) { try { $dirs = Get-Item -Path $root -ErrorAction SilentlyContinue foreach ($dir in $dirs) { $jars = Get-ChildItem -Path $dir.FullName -Filter 'mssql-jdbc*.jar' -Recurse -ErrorAction SilentlyContinue foreach ($jar in $jars) { Remove-Item -LiteralPath $jar.FullName -Force -ErrorAction Stop $removed += $jar.FullName $notFound = $false } # Leeres Verzeichnis entfernen wenn moeglich try { $remaining = Get-ChildItem -Path $dir.FullName -ErrorAction SilentlyContinue if (-not $remaining) { Remove-Item -LiteralPath $dir.FullName -Force -ErrorAction SilentlyContinue } } catch { } } } catch { } } if ($notFound) { return [PSCustomObject]@{ Status = 'NotFound' Message = 'Kein installierter JDBC-Treiber (mssql-jdbc*.jar) gefunden.' } } # Optional: CLASSPATH-Systemeintrag bereinigen if ($RemoveClassPath) { try { $cp = [Environment]::GetEnvironmentVariable('CLASSPATH', [EnvironmentVariableTarget]::Machine) if ($cp) { $parts = $cp -split ';' | Where-Object { $_ -notmatch 'mssql-jdbc' -and $_ -ne '' } $newCp = $parts -join ';' [Environment]::SetEnvironmentVariable('CLASSPATH', $newCp, [EnvironmentVariableTarget]::Machine) } } catch { } } return [PSCustomObject]@{ Status = 'Uninstalled' Message = "OK: $($removed.Count) JAR-Datei(en) entfernt.`n " + ($removed -join "`n ") } } |