Dargslan.WinChocolateyAudit.psm1

<#
.SYNOPSIS
    Chocolatey package manager audit toolkit — installed packages, outdated detection, source configuration, and feature status
.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-ChocolateyAudit {
    <#
    .SYNOPSIS
        Audit Chocolatey package manager status and packages
    .DESCRIPTION
        Reports Chocolatey version, installed packages, outdated packages, configured sources, and features.
        Part of Dargslan.WinChocolateyAudit (2026 Edition) — https://dargslan.com
    #>

    [CmdletBinding()] param([switch]$Json)
$chocoPath = Get-Command choco -ErrorAction SilentlyContinue
    if (-not $chocoPath) { Write-Warning "Chocolatey not installed"; return }
    $report = [ordered]@{
        Version = (choco --version 2>$null).Trim()
        Packages = choco list --local-only 2>$null | Where-Object { $_ -match "^\S+\s+\d" } | ForEach-Object { $p=$_ -split "\s+"; [PSCustomObject]@{Name=$p[0];Version=$p[1]} }
        Sources = choco source list 2>$null | Where-Object { $_ -match "http|\\|file:" } | ForEach-Object { $_.Trim() }
        Features = choco feature list 2>$null | Where-Object { $_ -match "Enabled|Disabled" } | Select-Object -First 15 | ForEach-Object { $_.Trim() }
        Summary = [PSCustomObject]@{ Version = ""; PackageCount = 0; SourceCount = 0 }
    }
    $report.Summary.Version = $report.Version
    $report.Summary.PackageCount = ($report.Packages | Measure-Object).Count
    $report.Summary.SourceCount = ($report.Sources | Measure-Object).Count
    if ($Json) { return $report | ConvertTo-Json -Depth 3 }
    Write-Host "`n [Chocolatey Audit - 2026]" -ForegroundColor Cyan
    Write-Host " Version: $($report.Version) | Packages: $($report.Summary.PackageCount)"
    $report.Packages | Format-Table -AutoSize
    return $report
}

Export-ModuleMember -Function *