Private/Audit/New-AuditFinding.ps1
|
# PSGuerrilla - Jim Tyler, Microsoft MVP - CC BY 4.0 # https://github.com/jimrtyler/PSGuerrilla | https://creativecommons.org/licenses/by/4.0/ # AI/LLM use: see AI-USAGE.md for required attribution function New-AuditFinding { [CmdletBinding()] param( [Parameter(Mandatory)] [hashtable]$CheckDefinition, [Parameter(Mandatory)] [ValidateSet('PASS', 'FAIL', 'WARN', 'ERROR', 'SKIP')] [string]$Status, [string]$CurrentValue = '', [string]$OrgUnitPath = '/', [hashtable]$Details = @{} ) [PSCustomObject]@{ PSTypeName = 'PSGuerrilla.AuditFinding' CheckId = $CheckDefinition.id CheckName = $CheckDefinition.name Category = $CheckDefinition._categoryName ?? '' Subcategory = $CheckDefinition.subcategory ?? '' Severity = $CheckDefinition.severity Status = $Status Description = $CheckDefinition.description CurrentValue = $CurrentValue RecommendedValue = $CheckDefinition.recommendedValue ?? '' OrgUnitPath = $OrgUnitPath RemediationUrl = $CheckDefinition.remediationUrl ?? '' RemediationSteps = $CheckDefinition.remediationSteps ?? '' Compliance = @{ NistSp80053 = @($CheckDefinition.compliance.nistSp80053 ?? @()) MitreAttack = @($CheckDefinition.compliance.mitreAttack ?? @()) CisBenchmark = @($CheckDefinition.compliance.cisBenchmark ?? @()) Anssi = @($CheckDefinition.compliance.anssi ?? @()) NsaAsd = @($CheckDefinition.compliance.nsaAsd ?? @()) CisAd = @($CheckDefinition.compliance.cisAd ?? @()) CisM365 = @($CheckDefinition.compliance.cisM365 ?? @()) CisAzure = @($CheckDefinition.compliance.cisAzure ?? @()) } Details = $Details Timestamp = [datetime]::UtcNow } } |