Dargslan.WinRSAT.psm1

<#
.SYNOPSIS
    Remote Server Administration Tools audit toolkit — installed RSAT features, available tools, and management console inventory
.DESCRIPTION
    2026 Edition — Dargslan Windows Admin Toolkit.
    https://dargslan.com | https://dargslan.com/cheat-sheets
.LINK
    https://dargslan.com
#>


function Get-RSATAudit {
    <#
    .SYNOPSIS
        Audit installed Remote Server Administration Tools
    .DESCRIPTION
        Part of Dargslan.WinRSAT (2026 Edition) — https://dargslan.com
    #>

    [CmdletBinding()] param([switch]$Json)
    $report = [ordered]@{
        InstalledRSAT = Get-WindowsCapability -Online -Name "RSAT*" -ErrorAction SilentlyContinue | Where-Object State -eq "Installed" | Select-Object Name, State
        AvailableRSAT = Get-WindowsCapability -Online -Name "RSAT*" -ErrorAction SilentlyContinue | Where-Object State -ne "Installed" | Select-Object Name, State
        MMCSnapins = Get-ChildItem "$env:SystemRoot\System32\*.msc" -ErrorAction SilentlyContinue | Select-Object Name, @{N="SizeKB";E={[math]::Round($_.Length/1KB,0)}}, LastWriteTime
        AdminTools = Get-ChildItem "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools" -ErrorAction SilentlyContinue | Select-Object Name, LastWriteTime
        Summary = [PSCustomObject]@{ InstalledRSAT = 0; AvailableRSAT = 0; MMCSnapins = 0; AdminTools = 0 }
    }
    $report.Summary.InstalledRSAT = ($report.InstalledRSAT | Measure-Object).Count
    $report.Summary.AvailableRSAT = ($report.AvailableRSAT | Measure-Object).Count
    $report.Summary.MMCSnapins = ($report.MMCSnapins | Measure-Object).Count
    $report.Summary.AdminTools = ($report.AdminTools | Measure-Object).Count
    if ($Json) { return $report | ConvertTo-Json -Depth 3 }
    Write-Host "`n [RSAT Audit - 2026]" -ForegroundColor Cyan
    $report.Summary | Format-List
    if ($report.InstalledRSAT) { Write-Host " Installed RSAT:" -ForegroundColor Green; $report.InstalledRSAT | Format-Table -AutoSize }
    if ($report.AvailableRSAT) { Write-Host " Available to Install:" -ForegroundColor Yellow; $report.AvailableRSAT | Format-Table -AutoSize }
    return $report
}

Export-ModuleMember -Function *