Checks/Backup/Test-RecoveryServicesVault.ps1

#Requires -Version 5.1
<#
.SYNOPSIS
    INF.1 - Recovery Services Vault Existenz.
.DESCRIPTION
    Verifies the Recovery Services Vault exists.
#>

function Test-RecoveryServicesVault {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)][string]$ResourceGroup,
        [Parameter(Mandatory)][string]$VaultName,
        [string]$SubscriptionId = ''
    )

    $response = Get-AzCliResponse -Arguments @("backup", "vault", "show", "--name", $VaultName, "--resource-group", $ResourceGroup) -SubscriptionId $SubscriptionId

    $pass = $response.ExitCode -eq 0
    $status = if ($pass) { [BsiCheckStatus]::Pass } else { [BsiCheckStatus]::Fail }
    $details = if ($pass) { "Recovery Services Vault '$VaultName' exists" } else { "Recovery Services Vault '$VaultName' not found" }

    $result = [ComplianceResult]::new(
        'INF.1', 'Recovery Services Vault exists', 'Backup',
        [BsiCheckMode]::Remote, $status, [BsiSeverity]::Medium, $details
    )
    $result.CheckFunction = 'Test-RecoveryServicesVault'
    $result.BsiReference  = 'BSI-G-00529'
    if (-not $pass) {
        $result.Remediation = "Create Recovery Services Vault '$VaultName' and configure backup policies"
    }
    return @($result)
}