Src/Private/Report/Get-AbrAzMaintenanceConfiguration.ps1
|
function Get-AbrAzMaintenanceConfiguration { <# .SYNOPSIS Used by As Built Report to retrieve Azure Maintenance Configuration information .DESCRIPTION Documents the configuration of Azure Maintenance Configurations, including scope, maintenance window, recurrence, timezone, and visibility settings. .NOTES Version: 0.1.0 Author: Tim Carman Twitter: @tpcarman Github: tpcarman .EXAMPLE .LINK #> [CmdletBinding()] param () begin { $LocalizedData = $reportTranslate.GetAbrAzMaintenanceConfiguration Write-PScriboMessage ($LocalizedData.InfoLevel -f $InfoLevel.MaintenanceConfiguration) } process { try { if ($InfoLevel.MaintenanceConfiguration -ge 1) { $AzMaintenanceConfigs = Get-AzMaintenanceConfiguration -ErrorAction SilentlyContinue | Sort-Object Name if ($AzMaintenanceConfigs) { Write-PScriboMessage $LocalizedData.Collecting Section -Style Heading4 $LocalizedData.Heading { if ($Options.ShowSectionInfo) { Paragraph $LocalizedData.SectionInfo BlankLine } $AzMcInfo = @() foreach ($AzMc in $AzMaintenanceConfigs) { $ResourceGroup = ($AzMc.Id).split('/')[4] $StartDateTime = if ($AzMc.MaintenanceWindow.StartDateTime) { $AzMc.MaintenanceWindow.StartDateTime } else { $LocalizedData.NotConfigured } $ExpirationDateTime = if ($AzMc.MaintenanceWindow.ExpirationDateTime) { $AzMc.MaintenanceWindow.ExpirationDateTime } else { $LocalizedData.NoExpiry } $Duration = if ($AzMc.MaintenanceWindow.Duration) { $AzMc.MaintenanceWindow.Duration } else { $LocalizedData.NotConfigured } $RecurEvery = if ($AzMc.MaintenanceWindow.RecurEvery) { $AzMc.MaintenanceWindow.RecurEvery } else { $LocalizedData.NotConfigured } $TimeZone = if ($AzMc.MaintenanceWindow.TimeZone) { $AzMc.MaintenanceWindow.TimeZone } else { $LocalizedData.NotConfigured } $InObj = [Ordered]@{ $LocalizedData.Name = $AzMc.Name $LocalizedData.ResourceGroup = $ResourceGroup $LocalizedData.Location = $AzLocationLookup."$($AzMc.Location)" $LocalizedData.Subscription = "$($AzSubscriptionLookup.(($AzMc.Id).split('/')[2]))" $LocalizedData.SubscriptionID = ($AzMc.Id).split('/')[2] $LocalizedData.Scope = $AzMc.MaintenanceScope $LocalizedData.Visibility = $AzMc.Visibility $LocalizedData.StartDateTime = $StartDateTime $LocalizedData.ExpirationDateTime = $ExpirationDateTime $LocalizedData.Duration = $Duration $LocalizedData.RecurEvery = $RecurEvery $LocalizedData.TimeZone = $TimeZone } if ($Options.ShowTags) { $InObj[$LocalizedData.Tags] = if ($null -eq $AzMc.Tag -or $AzMc.Tag.Count -eq 0) { $LocalizedData.None } else { ($AzMc.Tag.GetEnumerator() | ForEach-Object { "$($_.Name):`t$($_.Value)" }) -join [Environment]::NewLine } } $AzMcInfo += [PSCustomObject]$InObj } if ($InfoLevel.MaintenanceConfiguration -ge 2) { Paragraph ($LocalizedData.ParagraphDetail -f $AzSubscription.Name) foreach ($AzMcItem in $AzMcInfo) { $McName = $AzMcItem.($LocalizedData.Name) Section -Style NOTOCHeading5 -ExcludeFromTOC $McName { $TableParams = @{ Name = "$($LocalizedData.TableHeading) - $McName" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $AzMcItem | Table @TableParams } } } else { Paragraph ($LocalizedData.ParagraphSummary -f $AzSubscription.Name) BlankLine $TableParams = @{ Name = "$($LocalizedData.TableHeading) - $($AzSubscription.Name)" List = $false Columns = $LocalizedData.Name, $LocalizedData.Location, $LocalizedData.Scope, $LocalizedData.RecurEvery, $LocalizedData.Duration ColumnWidths = 30, 15, 25, 15, 15 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $AzMcInfo | Table @TableParams } } } } } catch { Write-PScriboMessage -IsWarning "$($LocalizedData.ErrorMessage) $($_.Exception.Message)" } } end {} } |