Src/Private/Report/Get-AbrAzPublicIpAddress.ps1
|
function Get-AbrAzPublicIpAddress { <# .SYNOPSIS Used by As Built Report to retrieve Azure Public IP Address information .DESCRIPTION Documents the configuration of Azure Public IP Addresses including allocation method, SKU, DNS settings, and associated resource. .NOTES Version: 0.1.0 Author: Tim Carman Twitter: @tpcarman Github: tpcarman .EXAMPLE .LINK #> [CmdletBinding()] param () begin { $LocalizedData = $reportTranslate.GetAbrAzPublicIpAddress Write-PScriboMessage ($LocalizedData.InfoLevel -f $InfoLevel.PublicIpAddress) } process { try { if ($InfoLevel.PublicIpAddress -ge 1) { $AzPublicIps = Get-AzPublicIpAddress -ErrorAction SilentlyContinue | Sort-Object Name if ($AzPublicIps) { Write-PScriboMessage $LocalizedData.Collecting Section -Style Heading4 $LocalizedData.Heading { if ($Options.ShowSectionInfo) { Paragraph $LocalizedData.SectionInfo BlankLine } $AzPublicIpInfo = @() foreach ($AzPip in $AzPublicIps) { $AssociatedResource = if ($AzPip.IpConfiguration.Id) { ($AzPip.IpConfiguration.Id).split('/')[-3] } else { $LocalizedData.None } $Zones = if ($AzPip.Zones -and $AzPip.Zones.Count -gt 0) { $AzPip.Zones -join ', ' } else { $LocalizedData.None } $InObj = [Ordered]@{ $LocalizedData.Name = $AzPip.Name $LocalizedData.ResourceGroup = $AzPip.ResourceGroupName $LocalizedData.Location = $AzLocationLookup."$($AzPip.Location)" $LocalizedData.Subscription = "$($AzSubscriptionLookup.(($AzPip.Id).split('/')[2]))" $LocalizedData.SubscriptionID = ($AzPip.Id).split('/')[2] $LocalizedData.SKU = $AzPip.Sku.Name $LocalizedData.Tier = $AzPip.Sku.Tier $LocalizedData.IpVersion = $AzPip.PublicIpAddressVersion $LocalizedData.AllocationMethod = $AzPip.PublicIpAllocationMethod $LocalizedData.IpAddress = if ($AzPip.IpAddress) { $AzPip.IpAddress } else { $LocalizedData.NotAssigned } $LocalizedData.DnsLabel = if ($AzPip.DnsSettings.DomainNameLabel) { $AzPip.DnsSettings.DomainNameLabel } else { $LocalizedData.None } $LocalizedData.Fqdn = if ($AzPip.DnsSettings.Fqdn) { $AzPip.DnsSettings.Fqdn } else { $LocalizedData.None } $LocalizedData.Zones = $Zones $LocalizedData.AssociatedResource = $AssociatedResource $LocalizedData.ProvisioningState = $AzPip.ProvisioningState } if ($Options.ShowTags) { $InObj[$LocalizedData.Tags] = if ($null -eq $AzPip.Tag -or $AzPip.Tag.Count -eq 0) { $LocalizedData.None } else { ($AzPip.Tag.GetEnumerator() | ForEach-Object { "$($_.Name):`t$($_.Value)" }) -join [Environment]::NewLine } } $AzPublicIpInfo += [PSCustomObject]$InObj } if ($Healthcheck.PublicIpAddress.ProvisioningState) { $AzPublicIpInfo | Where-Object { $_.$($LocalizedData.ProvisioningState) -ne 'Succeeded' } | Set-Style -Style Critical -Property $LocalizedData.ProvisioningState } if ($Healthcheck.PublicIpAddress.Unattached) { $AzPublicIpInfo | Where-Object { $_.$($LocalizedData.AssociatedResource) -eq $LocalizedData.None } | Set-Style -Style Warning -Property $LocalizedData.AssociatedResource } if ($InfoLevel.PublicIpAddress -ge 2) { Paragraph ($LocalizedData.ParagraphDetail -f $AzSubscription.Name) foreach ($AzPip in $AzPublicIpInfo) { Section -Style NOTOCHeading5 -ExcludeFromTOC "$($AzPip.($LocalizedData.Name))" { $TableParams = @{ Name = "$($LocalizedData.TableHeading) - $($AzPip.($LocalizedData.Name))" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $AzPip | Table @TableParams } } } else { Paragraph ($LocalizedData.ParagraphSummary -f $AzSubscription.Name) BlankLine $TableParams = @{ Name = "$($LocalizedData.TableHeading) - $($AzSubscription.Name)" List = $false Columns = $LocalizedData.Name, $LocalizedData.ResourceGroup, $LocalizedData.Location, $LocalizedData.SKU, $LocalizedData.IpAddress, $LocalizedData.AllocationMethod, $LocalizedData.ProvisioningState ColumnWidths = 20, 15, 15, 10, 15, 12, 13 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $AzPublicIpInfo | Table @TableParams } } } } } catch { Write-PScriboMessage -IsWarning "$($LocalizedData.ErrorMessage) $($_.Exception.Message)" } } end {} } |