Dargslan.WinWSB.psm1

<#
.SYNOPSIS
    Windows Server Backup audit toolkit — backup schedule, backup history, backup destinations, and recovery catalog status
.DESCRIPTION
    2026 Edition — Dargslan Windows Admin Toolkit.
    https://dargslan.com | https://dargslan.com/cheat-sheets
.LINK
    https://dargslan.com
#>


function Get-WSBAudit {
    <#
    .SYNOPSIS
        Audit Windows Server Backup configuration and history
    .DESCRIPTION
        Part of Dargslan.WinWSB (2026 Edition) — https://dargslan.com
    #>

    [CmdletBinding()] param([switch]$Json)
    $report = [ordered]@{
        Feature = Get-WindowsFeature Windows-Server-Backup -ErrorAction SilentlyContinue | Select-Object Name, Installed, InstallState
        Policy = Get-WBPolicy -ErrorAction SilentlyContinue
        Schedule = @()
        BackupTarget = @()
        Summary = [PSCustomObject]@{ Installed = $false; Configured = $false; Schedule = "None" }
    }
    if ($report.Feature.Installed) {
        $report.Summary.Installed = $true
        $policy = Get-WBPolicy -ErrorAction SilentlyContinue
        if ($policy) {
            $report.Summary.Configured = $true
            $report.Schedule = Get-WBSchedule -Policy $policy -ErrorAction SilentlyContinue
            $report.BackupTarget = Get-WBBackupTarget -Policy $policy -ErrorAction SilentlyContinue | Select-Object TargetType, TargetPath, Label
            $report.Summary.Schedule = ($report.Schedule -join ", ")
        }
    }
    $report.BackupHistory = Get-WBSummary -ErrorAction SilentlyContinue | Select-Object LastSuccessfulBackupTime, LastBackupTime, LastBackupTarget, NumberOfVersions, CurrentOperationStatus
    if ($Json) { return $report | ConvertTo-Json -Depth 3 }
    Write-Host "`n [Windows Server Backup - 2026]" -ForegroundColor Cyan
    $report.Summary | Format-List
    if ($report.BackupHistory) { $report.BackupHistory | Format-List }
    if ($report.BackupTarget) { $report.BackupTarget | Format-Table -AutoSize }
    return $report
}

Export-ModuleMember -Function *