Private/Write-IgugaReporSummary.ps1
function Write-IgugaReporSummary() { param( # Mode - sets the operation mode. [Parameter(Position = 0, Mandatory = $true)] [ValidateSet("Generate", "Validate", "Compare", "SetMailerSetting", "RemoveMailerSetting", "ShowMailerSetting")] [string] $Mode, # OutputFilePath - sets the file path to export the summary [Parameter(Position = 1, Mandatory = $true)] [AllowEmptyString()] [string] $OutputFilePath, # Sets the hashing algorithm to be used in the checksum operation. (Default: SHA256) [ValidateSet("MD5", "SHA1", "SHA256", "SHA384", "SHA512")] [string] $Algorithm = "SHA256", # Path - sets the path to a given file or directory [string] $Path, # Footer - indicates whether this is the footer summary or not [switch] $Footer ) $HasOutput = $false $OutputFileExists = $false if (-not([string]::IsNullOrWhiteSpace($OutputFilePath))) { $OutputFileExists = Test-Path -LiteralPath $OutputFilePath -PathType Leaf $OutputFilePath = if ($OutputFileExists) { Get-IgugaCanonicalPath -Path $OutputFilePath } else { Get-IgugaCanonicalPath -Path $OutputFilePath -NonExistentPath } $HasOutput = $true } if ($Footer.IsPresent) { $FooterNotes = @( "", "$($Script:LocalizedData.ReportSummaryEndedAt -f $(Get-Date).ToString("yyyy-MM-dd HH:mm:ss"))", "$($Script:LocalizedData.ReportSummaryOperationMode -f $Mode)" ) if ($Mode -eq "Compare") { $FooterNotes = @( "", "$($Script:LocalizedData.ReportSummaryEndedAt -f $(Get-Date).ToString("yyyy-MM-dd HH:mm:ss"))", "$($Script:LocalizedData.ReportSummaryOperationMode -f $Mode)", "$($Script:LocalizedData.ReportSummaryFilePath -f $Path)", "$($Script:LocalizedData.ReportSummaryChecksumAlgorithm -f $Algorithm)" ) } elseif ($Mode -eq "Generate") { $FooterNotes = @( "", "$($Script:LocalizedData.ReportSummaryEndedAt -f $(Get-Date).ToString("yyyy-MM-dd HH:mm:ss"))", "$($Script:LocalizedData.ReportSummaryOperationMode -f $Mode)", "$($Script:LocalizedData.ReportSummaryTotalOfItems -f $Script:TotalOfItems)", "$($Script:LocalizedData.ReportSummaryTotalGenerated -f $Script:ReportItemsGenerated)", "$($Script:LocalizedData.ReportSummaryTotalFileNotFound -f $Script:ReportItemsFileNotFound)", "$($Script:LocalizedData.ReportSummaryPath -f $Path)", "$($Script:LocalizedData.ReportSummaryChecksumAlgorithm -f $Algorithm)" ) } elseif ($Mode -eq "Validate") { $FooterNotes = @( "", "$($Script:LocalizedData.ReportSummaryEndedAt -f $(Get-Date).ToString("yyyy-MM-dd HH:mm:ss"))", "$($Script:LocalizedData.ReportSummaryOperationMode -f $Mode)", "$($Script:LocalizedData.ReportSummaryTotalOfItems -f $Script:TotalOfItems)", "$($Script:LocalizedData.ReportSummaryTotalPassed -f $Script:ReportItemsValid)", "$($Script:LocalizedData.ReportSummaryTotalFailed -f $Script:ReportItemsInvalid)", "$($Script:LocalizedData.ReportSummaryTotalFileNotFound -f $Script:ReportItemsFileNotFound)", "$($Script:LocalizedData.ReportSummaryChecksumFilePath -f $Path)", "$($Script:LocalizedData.ReportSummaryChecksumAlgorithm -f $Algorithm)" ) } if ($HasOutput) { $FooterNotes += "$($Script:LocalizedData.ReportSummaryOutputFilePath -f $OutputFilePath)" } for ($i = 0; $i -lt $FooterNotes.Count; $i++) { if ($HasOutput) { Add-Content -LiteralPath $OutputFilePath -Value $FooterNotes[$i] } if (-not([string]::IsNullOrWhiteSpace($FooterNotes[$i]))) { Write-Verbose $FooterNotes[$i] } } return } $HeaderNotes = @( "$($Script:LocalizedData.ReportSummaryAgent -f $MyInvocation.MyCommand.Module.Name)", "$($Script:LocalizedData.ReportSummaryVersion -f $MyInvocation.MyCommand.Module.Version.ToString())", "$($Script:LocalizedData.ReportSummaryDescription -f $MyInvocation.MyCommand.Module.Description)", "$($Script:LocalizedData.ReportSummaryProjectUrl -f $MyInvocation.MyCommand.Module.ProjectUri)", "$($Script:LocalizedData.ReportSummaryAuthor -f $MyInvocation.MyCommand.Module.Author)", "$($Script:LocalizedData.ReportSummaryStartedAt -f $(Get-Date).ToString("yyyy-MM-dd HH:mm:ss"))", "" ) if ($HasOutput -and -not($OutputFileExists)) { $null = New-Item -Path $OutputFilePath -ItemType File } for ($i = 0; $i -lt $HeaderNotes.Count; $i++) { if ($HasOutput) { if ($i -eq 0) { Set-Content -LiteralPath $OutputFilePath -Value $HeaderNotes[$i] continue } Add-Content -LiteralPath $OutputFilePath -Value $HeaderNotes[$i] } if (-not([string]::IsNullOrWhiteSpace($HeaderNotes[$i]))) { Write-Verbose $HeaderNotes[$i] } } } |