Dargslan.WinJavaAudit.psm1
|
<# .SYNOPSIS Java runtime audit toolkit — JDK/JRE inventory, version detection, JAVA_HOME validation, security settings, and multiple installation detection .DESCRIPTION 2026 Edition — Part of the Dargslan Windows Admin Toolkit collection. More tools and resources at https://dargslan.com Free Cheat Sheets: https://dargslan.com/cheat-sheets .LINK https://dargslan.com .LINK https://github.com/Dargslan/powershell-admin-scripts #> function Get-JavaAudit { <# .SYNOPSIS Audit Java installations and security settings .DESCRIPTION Reports installed Java versions, JDK/JRE paths, JAVA_HOME configuration, security properties, and browser plugin status. Part of Dargslan.WinJavaAudit (2026 Edition) — https://dargslan.com #> [CmdletBinding()] param([switch]$Json) $report = [ordered]@{ JAVA_HOME = $env:JAVA_HOME JavaInPath = (Get-Command java -ErrorAction SilentlyContinue).Source JavaVersion = try { java -version 2>&1 | Select-Object -First 3 | ForEach-Object { $_.ToString().Trim() } } catch { "Not found" } Installations = @() SecuritySettings = @() } $javaKeys = @("HKLM:\SOFTWARE\JavaSoft", "HKLM:\SOFTWARE\WOW6432Node\JavaSoft") foreach ($key in $javaKeys) { Get-ChildItem $key -Recurse -ErrorAction SilentlyContinue | Get-ItemProperty -ErrorAction SilentlyContinue | Where-Object JavaHome | ForEach-Object { $report.Installations += [PSCustomObject]@{ Path = $_.JavaHome; Version = $_.PSChildName; Architecture = if($key -match "WOW6432") {"32-bit"} else {"64-bit"} } } } $adoptPaths = Get-ChildItem "C:\Program Files\Eclipse Adoptium","C:\Program Files\AdoptOpenJDK","C:\Program Files\Java" -Directory -ErrorAction SilentlyContinue foreach ($p in $adoptPaths) { $report.Installations += [PSCustomObject]@{ Path=$p.FullName; Version=$p.Name; Architecture="64-bit" } } $report.Summary = [PSCustomObject]@{ JAVA_HOME = if($report.JAVA_HOME) { $report.JAVA_HOME } else { "NOT SET" } InstallationCount = ($report.Installations | Measure-Object).Count InPath = if($report.JavaInPath) {"Yes"} else {"No"} } if ($Json) { return $report | ConvertTo-Json -Depth 3 } Write-Host "`n [Java Audit - 2026]" -ForegroundColor Cyan $report.Summary | Format-List if ($report.JavaVersion -ne "Not found") { $report.JavaVersion | ForEach-Object { Write-Host " $_" } } if ($report.Installations) { $report.Installations | Format-Table -AutoSize } if (-not $report.JAVA_HOME) { Write-Host " Warning: JAVA_HOME not set" -ForegroundColor Yellow } return $report } Export-ModuleMember -Function * |