add: error handling for tests that produce large output

This commit is contained in:
DrIOS
2024-06-16 12:23:39 -05:00
parent 9b624680fd
commit 04e63f72fc
6 changed files with 92 additions and 23 deletions

View File

@@ -166,28 +166,12 @@ function Export-M365SecurityAuditTable {
if ($ExportOriginalTests) {
# Define the test numbers to check
$testNumbersToCheck = "1.1.1", "1.3.1", "6.1.2", "6.1.3", "7.3.4"
# Iterate through the AuditResults and check the Details length for the specified test numbers
for ($i = 0; $i -lt $AuditResults.Count; $i++) {
$auditResult = $AuditResults[$i]
if ($auditResult.Rec -in $testNumbersToCheck) {
if ($auditResult.Details.Length -gt 30000) {
if ($exportedTests -contains $auditResult.Rec) {
Write-Information "The test result for $($auditResult.Rec) is too large for CSV and was included in the export. Check the exported files."
$auditResult.Details = "The test result is too large to be exported to CSV. Use the audit result and the export function for full output."
}
else {
Write-Information "The test result for $($auditResult.Rec) is too large for CSV."
$auditResult.Details = "The test result is too large to be exported to CSV. Use the audit result and the export function for full output."
}
# Update the AuditResults array with the modified auditResult
$AuditResults[$i] = $auditResult
}
}
}
# Export the modified audit results to a CSV file
$TestNumbersToCheck = "1.1.1", "1.3.1", "6.1.2", "6.1.3", "7.3.4"
# Check for large details and update the AuditResults array
$updatedAuditResults = Get-ExceededLengthResultDetail -AuditResults $AuditResults -TestNumbersToCheck $TestNumbersToCheck -ExportedTests $exportedTests -DetailsLengthLimit 30000
$originalFileName = "$ExportPath\$timestamp`_M365FoundationsAudit.csv"
$AuditResults | Export-Csv -Path $originalFileName -NoTypeInformation
$updatedAuditResults | Export-Csv -Path $originalFileName -NoTypeInformation
}
}
elseif ($OutputTestNumber) {

View File

@@ -286,6 +286,16 @@ function Invoke-M365SecurityAudit {
# Call the private function to calculate and display results
Measure-AuditResult -AllAuditResults $allAuditResults -FailedTests $script:FailedTests
# Return all collected audit results
# Define the test numbers to check
$TestNumbersToCheck = "1.1.1", "1.3.1", "6.1.2", "6.1.3", "7.3.4"
# Check for large details in the audit results
$exceedingTests = Get-ExceededLengthResultDetail -AuditResults $allAuditResults -TestNumbersToCheck $TestNumbersToCheck -ReturnExceedingTestsOnly -DetailsLengthLimit 30000
if ($exceedingTests.Count -gt 0) {
Write-Information "The following tests exceeded the details length limit: $($exceedingTests -join ', ')" -InformationAction Continue
Write-Host "(Assuming the results were instantiated. Ex: `$object = invoke-M365SecurityAudit) Use the following command and adjust as neccesary to view the full details of the test results:" -ForegroundColor Gray
Write-Host "Export-M365SecurityAuditTable -ExportAllTests -AuditResults `$object -ExportPath `"C:\temp`" -ExportOriginalTests" -ForegroundColor Green
}
return $allAuditResults.ToArray() | Sort-Object -Property Rec
}
}