Src/Private/Report/Get-AbrAzVmScaleSet.ps1
|
function Get-AbrAzVmScaleSet { <# .SYNOPSIS Used by As Built Report to retrieve Azure Virtual Machine Scale Set information .DESCRIPTION Documents the configuration of Azure Virtual Machine Scale Sets, including SKU, orchestration mode, upgrade policy, zones, and instance count. .NOTES Version: 0.1.0 Author: Tim Carman Twitter: @tpcarman Github: tpcarman .EXAMPLE .LINK #> [CmdletBinding()] param () begin { $LocalizedData = $reportTranslate.GetAbrAzVmScaleSet Write-PScriboMessage ($LocalizedData.InfoLevel -f $InfoLevel.VmScaleSet) } process { try { if ($InfoLevel.VmScaleSet -ge 1) { $AzVmScaleSets = Get-AzVmss -ErrorAction SilentlyContinue | Sort-Object Name if ($AzVmScaleSets) { Write-PScriboMessage $LocalizedData.Collecting Section -Style Heading4 $LocalizedData.Heading { if ($Options.ShowSectionInfo) { Paragraph $LocalizedData.SectionInfo BlankLine } $AzVmssInfo = @() foreach ($AzVmss in $AzVmScaleSets) { $Zones = if ($AzVmss.Zones -and $AzVmss.Zones.Count -gt 0) { $AzVmss.Zones -join ', ' } else { $LocalizedData.None } $Identity = if ($AzVmss.Identity) { $AzVmss.Identity.Type } else { $LocalizedData.None } $InObj = [Ordered]@{ $LocalizedData.Name = $AzVmss.Name $LocalizedData.ResourceGroup = $AzVmss.ResourceGroupName $LocalizedData.Location = $AzLocationLookup."$($AzVmss.Location)" $LocalizedData.Subscription = "$($AzSubscriptionLookup.(($AzVmss.Id).split('/')[2]))" $LocalizedData.SubscriptionID = ($AzVmss.Id).split('/')[2] $LocalizedData.VmSize = $AzVmss.Sku.Name $LocalizedData.Instances = $AzVmss.Sku.Capacity $LocalizedData.OrchestrationMode = $AzVmss.OrchestrationMode $LocalizedData.UpgradePolicy = $AzVmss.UpgradePolicy.Mode $LocalizedData.Overprovision = $AzVmss.Overprovision $LocalizedData.SinglePlacementGroup = $AzVmss.SinglePlacementGroup $LocalizedData.Zones = $Zones $LocalizedData.Identity = $Identity $LocalizedData.ProvisioningState = $AzVmss.ProvisioningState } if ($Options.ShowTags) { $InObj[$LocalizedData.Tags] = if ($null -eq $AzVmss.Tags -or $AzVmss.Tags.Count -eq 0) { $LocalizedData.None } else { ($AzVmss.Tags.GetEnumerator() | ForEach-Object { "$($_.Name):`t$($_.Value)" }) -join [Environment]::NewLine } } $AzVmssInfo += [PSCustomObject]$InObj } if ($Healthcheck.VmScaleSet.ProvisioningState) { $AzVmssInfo | Where-Object { $_.$($LocalizedData.ProvisioningState) -ne 'Succeeded' } | Set-Style -Style Critical -Property $LocalizedData.ProvisioningState } if ($InfoLevel.VmScaleSet -ge 2) { Paragraph ($LocalizedData.ParagraphDetail -f $AzSubscription.Name) foreach ($AzVmssItem in $AzVmssInfo) { $VmssName = $AzVmssItem.($LocalizedData.Name) Section -Style NOTOCHeading5 -ExcludeFromTOC $VmssName { $TableParams = @{ Name = "$($LocalizedData.TableHeading) - $VmssName" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $AzVmssItem | Table @TableParams } } } else { Paragraph ($LocalizedData.ParagraphSummary -f $AzSubscription.Name) BlankLine $TableParams = @{ Name = "$($LocalizedData.TableHeading) - $($AzSubscription.Name)" List = $false Columns = $LocalizedData.Name, $LocalizedData.Location, $LocalizedData.VmSize, $LocalizedData.Instances, $LocalizedData.UpgradePolicy, $LocalizedData.ProvisioningState ColumnWidths = 25, 20, 25, 10, 10, 10 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $AzVmssInfo | Table @TableParams } } } } } catch { Write-PScriboMessage -IsWarning "$($LocalizedData.ErrorMessage) $($_.Exception.Message)" } } end {} } |