Private/Methods/Domain/Add-ExportMethod.ps1
|
function Add-ExportMethod { param ($DomainReport) $exportReport = { param( [string]$ExportPath ) try { Write-Log "Starting export operation..." -Level Info Show-ProgressHelper -Activity "Domain Report Export" -Status "Initializing export..." # Use provided path or default from config $finalPath = if ($ExportPath) { $ExportPath } else { $script:Config.ExportPath } # Ensure export directory exists Show-ProgressHelper -Activity "Domain Report Export" -Status "Checking export directory..." -PercentComplete 20 if (-not (Test-Path $finalPath)) { New-Item -ItemType Directory -Path $finalPath -Force | Out-Null Write-Log "Created export directory: $finalPath" -Level Info } # Prepare export file path Show-ProgressHelper -Activity "Domain Report Export" -Status "Preparing export file..." -PercentComplete 40 $exportFile = Join-Path $finalPath ("DomainReport_{0}.json" -f (Get-Date -Format 'yyyyMMdd_HHmmss')) # Convert to JSON Show-ProgressHelper -Activity "Domain Report Export" -Status "Converting report to JSON..." -PercentComplete 60 $jsonContent = $this | ConvertTo-Json -Depth 10 # Write to file Show-ProgressHelper -Activity "Domain Report Export" -Status "Writing to file..." -PercentComplete 80 $jsonContent | Out-File $exportFile Show-ProgressHelper -Activity "Domain Report Export" -Status "Export completed" -PercentComplete 100 Write-Log "Report successfully exported to: $exportFile" -Level Info # Complete the progress bar Show-ProgressHelper -Activity "Domain Report Export" -Completed return $exportFile } catch { Write-Log "Error exporting report: $($_.Exception.Message)" -Level Error Show-ProgressHelper -Activity "Domain Report Export" -Status "Export failed" -Completed return $null } } Add-Member -InputObject $DomainReport -MemberType ScriptMethod -Name "Export" -Value $exportReport -Force } |