Private/Hydration/Invoke-HydrationDeleteCandidates.ps1

function Invoke-HydrationDeleteCandidates {
    [CmdletBinding(SupportsShouldProcess)]
    param(
        [Parameter(Mandatory)]
        [AllowEmptyCollection()]
        [array]$Candidates,

        [Parameter(Mandatory)]
        [string]$ResultType,

        [Parameter(Mandatory)]
        [string]$Label
    )

    $results = @()
    if ($Candidates.Count -eq 0) {
        return $results
    }

    if (-not $PSCmdlet.ShouldProcess("$($Candidates.Count) $Label", 'Delete')) {
        if ($WhatIfPreference) {
            foreach ($candidate in $Candidates) {
                Write-HydrationLog -Message " WouldDelete: $($candidate.Name)" -Level Info
                $results += New-HydrationResult -Name $candidate.Name -Type $ResultType -Action 'WouldDelete' -Status 'DryRun'
            }
        }
        return $results
    }

    return Invoke-GraphBatchOperation -Items $Candidates -Operation 'DELETE' -ResultType $ResultType
}