src/Private/Assessment/Invoke-MCSPSRule.ps1

function Invoke-MCSPSRule {
    Param($SubscriptionID,$WorkingDirectory,$Debug)

    if ($Debug.IsPresent) {
        $DebugPreference = "Continue"
    } else {
        $DebugPreference = "SilentlyContinue"
    }

    Write-Debug ((get-date -Format 'yyyy-MM-dd HH:mm:ss') + ' - Starting PSRule Module')

    Write-Host "Starting PSRule Data Collection for Workload: $WorkloadName"
    # PSRule Export
    $RuleObjects = @()
    $ResourceCollection = @()
    $RuleQuery = "resources"
    foreach ($Subscription in $SubscriptionID) {
        # PSRule Resources Export
        try
            {
                $QueryResult = Search-AzGraph -Query $RuleQuery -first 1000 -Subscription $Subscription -Debug:$false
            }
        catch
            {
                $QueryResult = Search-AzGraph -Query $RuleQuery -first 200 -Subscription $Subscription -Debug:$false
            }

        $RuleObjects += $QueryResult
        while ($QueryResult.SkipToken) {
            try
                {
                    $QueryResult = Search-AzGraph -Query $RuleQuery -SkipToken $QueryResult.SkipToken -Subscription $Subscription -first 1000 -Debug:$false
                }
            catch
                {
                    $QueryResult = Search-AzGraph -Query $RuleQuery -SkipToken $QueryResult.SkipToken -Subscription $Subscription -first 200 -Debug:$false
                }
            $RuleObjects += $QueryResult
        }
    }

    Write-Host " - Generating CSV results..." -ForegroundColor Yellow
    $RuleObjects | Invoke-PSRule -Outcome Fail -Module PSRule.Rules.Azure -OutputPath "$workingDirectory\PSRuleResults.csv" -OutputFormat Csv
    $RulesResult = $RuleObjects | Invoke-PSRule -Outcome Fail -Module PSRule.Rules.Azure 

    foreach ($Rule in $RulesResult) {
        $ResObj = [PSCustomObject]@{
            'Recommendation Guid'        = $Rule.Ref
            'Recommendation Title'       = $Rule.Recommendation
            'Description'                = [string]$Rule.Reason
            'Priority'                   = "Medium"
            'Customer-facing annotation' = ""
            'Internal-facing notes'      = ("PSRuleID: "+$Rule.RuleId)
            'Potential Benefit'          = ""
            'Resource Type'              = $Rule.TargetType
            'Resource ID'                = $Rule.TargetObject.id
        }
        $ResourceCollection += $ResObj
    }
    return $ResourceCollection
}