Src/Private/Report/Get-AbrAzDiagnosticSetting.ps1
|
function Get-AbrAzDiagnosticSetting { <# .SYNOPSIS Used by As Built Report to retrieve Azure Diagnostic Setting information .DESCRIPTION Documents the configuration of Azure Diagnostic Settings across resources, including Log Analytics workspace, storage account, and Event Hub destinations. .NOTES Version: 0.1.0 Author: Tim Carman Twitter: @tpcarman Github: tpcarman .EXAMPLE .LINK #> [CmdletBinding()] param () begin { $LocalizedData = $reportTranslate.GetAbrAzDiagnosticSetting Write-PScriboMessage ($LocalizedData.InfoLevel -f $InfoLevel.DiagnosticSetting) } process { try { if ($InfoLevel.DiagnosticSetting -ge 1) { Write-PScriboMessage $LocalizedData.Collecting $AzResources = Get-AzResource -ErrorAction SilentlyContinue | Sort-Object Name $DiagSettingsData = @() foreach ($Resource in $AzResources) { $Settings = Get-AzDiagnosticSetting -ResourceId $Resource.ResourceId -WarningAction SilentlyContinue -ErrorAction SilentlyContinue foreach ($Setting in $Settings) { $EnabledLogCount = ($Setting.Log | Where-Object { $_.Enabled }).Count $MetricsEnabled = ($Setting.Metric | Where-Object { $_.Enabled }).Count -gt 0 $WorkspaceName = if ($Setting.WorkspaceId) { ($Setting.WorkspaceId).split('/')[-1] } else { $LocalizedData.None } $StorageAccountName = if ($Setting.StorageAccountId) { ($Setting.StorageAccountId).split('/')[-1] } else { $LocalizedData.None } $EventHubName = if ($Setting.EventHubAuthorizationRuleId) { ($Setting.EventHubAuthorizationRuleId).split('/')[-3] } else { $LocalizedData.None } $InObj = [Ordered]@{ $LocalizedData.ResourceName = $Resource.Name $LocalizedData.ResourceType = $Resource.ResourceType $LocalizedData.ResourceGroup = $Resource.ResourceGroupName $LocalizedData.Name = $Setting.Name $LocalizedData.LogAnalyticsWorkspace = $WorkspaceName $LocalizedData.StorageAccount = $StorageAccountName $LocalizedData.EventHub = $EventHubName $LocalizedData.LogCategoriesEnabled = $EnabledLogCount $LocalizedData.MetricsEnabled = if ($MetricsEnabled) { $LocalizedData.Yes } else { $LocalizedData.No } } $DiagSettingsData += [PSCustomObject]$InObj } } if ($DiagSettingsData) { Section -Style Heading4 $LocalizedData.Heading { if ($Options.ShowSectionInfo) { Paragraph $LocalizedData.SectionInfo BlankLine } if ($Healthcheck.DiagnosticSetting.NoLogsEnabled) { $DiagSettingsData | Where-Object { $_.$($LocalizedData.LogCategoriesEnabled) -eq 0 } | Set-Style -Style Warning -Property $LocalizedData.LogCategoriesEnabled } if ($InfoLevel.DiagnosticSetting -ge 2) { Paragraph ($LocalizedData.ParagraphDetail -f $AzSubscription.Name) BlankLine foreach ($DiagSetting in $DiagSettingsData) { $SectionTitle = "$($DiagSetting.($LocalizedData.ResourceName)) - $($DiagSetting.($LocalizedData.Name))" Section -Style NOTOCHeading5 -ExcludeFromTOC $SectionTitle { $TableParams = @{ Name = "$($LocalizedData.TableHeading) - $SectionTitle" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $DiagSetting | Table @TableParams } } } else { Paragraph ($LocalizedData.ParagraphSummary -f $AzSubscription.Name) BlankLine $TableParams = @{ Name = "$($LocalizedData.TableHeading) - $($AzSubscription.Name)" List = $false Columns = $LocalizedData.ResourceName, $LocalizedData.ResourceGroup, $LocalizedData.Name, $LocalizedData.LogCategoriesEnabled, $LocalizedData.MetricsEnabled ColumnWidths = 25, 20, 25, 15, 15 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $DiagSettingsData | Table @TableParams } } } } } catch { Write-PScriboMessage -IsWarning "$($LocalizedData.ErrorMessage) $($_.Exception.Message)" } } end {} } |