Src/Private/Report/Get-AbrAzAutomationAccount.ps1
|
function Get-AbrAzAutomationAccount { <# .SYNOPSIS Used by As Built Report to retrieve Azure Automation Account information .DESCRIPTION Documents the configuration of Azure Automation Accounts including runbooks, variables, schedules, and credentials. .NOTES Version: 0.1.0 Author: Tim Carman Twitter: @tpcarman Github: tpcarman .EXAMPLE .LINK #> [CmdletBinding()] param () begin { $LocalizedData = $reportTranslate.GetAbrAzAutomationAccount Write-PScriboMessage ($LocalizedData.InfoLevel -f $InfoLevel.AutomationAccount) } process { try { if ($InfoLevel.AutomationAccount -ge 1) { $AzAutomationAccounts = Get-AzAutomationAccount -ErrorAction SilentlyContinue | Sort-Object AutomationAccountName if ($AzAutomationAccounts) { # The list API does not populate State; build a lookup from ARM resource properties instead $AzAutoStateMap = @{} $AzAutoResources = Get-AzResource -ResourceType 'Microsoft.Automation/automationAccounts' -ExpandProperties -ErrorAction SilentlyContinue foreach ($AzAutoResource in $AzAutoResources) { $AzAutoStateMap["$($AzAutoResource.ResourceGroupName)|$($AzAutoResource.Name)"] = $AzAutoResource.Properties.state } Write-PScriboMessage $LocalizedData.Collecting Section -Style Heading4 $LocalizedData.Heading { if ($Options.ShowSectionInfo) { Paragraph $LocalizedData.SectionInfo BlankLine } $AzAutomationAccountInfo = @() foreach ($AzAutomationAccount in $AzAutomationAccounts) { $InObj = [Ordered]@{ $LocalizedData.Name = $AzAutomationAccount.AutomationAccountName $LocalizedData.ResourceGroup = $AzAutomationAccount.ResourceGroupName $LocalizedData.Location = $AzLocationLookup."$($AzAutomationAccount.Location)" $LocalizedData.Subscription = "$($AzSubscriptionLookup.($AzAutomationAccount.SubscriptionId))" $LocalizedData.SubscriptionID = $AzAutomationAccount.SubscriptionId $LocalizedData.State = $AzAutoStateMap["$($AzAutomationAccount.ResourceGroupName)|$($AzAutomationAccount.AutomationAccountName)"] } if ($Options.ShowTags) { $InObj[$LocalizedData.Tags] = if ($null -eq $AzAutomationAccount.Tags -or $AzAutomationAccount.Tags.Count -eq 0) { $LocalizedData.None } else { ($AzAutomationAccount.Tags.GetEnumerator() | ForEach-Object { "$($_.Key):`t$($_.Value)" }) -join [Environment]::NewLine } } $AzAutomationAccountInfo += [PSCustomObject]$InObj } if ($Healthcheck.AutomationAccount.State) { $AzAutomationAccountInfo | Where-Object { $_.$($LocalizedData.State) -ne 'Ok' } | Set-Style -Style Critical -Property $LocalizedData.State } if ($InfoLevel.AutomationAccount -ge 2) { Paragraph ($LocalizedData.ParagraphDetail -f $AzSubscription.Name) BlankLine foreach ($AzAutoAcctItem in $AzAutomationAccountInfo) { $AcctName = $AzAutoAcctItem.($LocalizedData.Name) $AcctRg = $AzAutoAcctItem.($LocalizedData.ResourceGroup) Section -Style NOTOCHeading5 -ExcludeFromTOC $AcctName { $TableParams = @{ Name = "$($LocalizedData.TableHeading) - $AcctName" List = $true ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $AzAutoAcctItem | Table @TableParams $AzRunbooks = Get-AzAutomationRunbook -AutomationAccountName $AcctName -ResourceGroupName $AcctRg -ErrorAction SilentlyContinue | Sort-Object Name if ($AzRunbooks) { Section -Style NOTOCHeading6 -ExcludeFromTOC $LocalizedData.RunbooksHeading { $RunbookInfo = @() foreach ($Runbook in $AzRunbooks) { $InObj = [Ordered]@{ $LocalizedData.Name = $Runbook.Name $LocalizedData.RunbookType = $Runbook.RunbookType $LocalizedData.State = $Runbook.State $LocalizedData.LastModified = $Runbook.LastModifiedTime } $RunbookInfo += [PSCustomObject]$InObj } $TableParams = @{ Name = "$($LocalizedData.RunbooksHeading) - $AcctName" List = $false ColumnWidths = 35, 20, 20, 25 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $RunbookInfo | Table @TableParams } } $AzVariables = Get-AzAutomationVariable -AutomationAccountName $AcctName -ResourceGroupName $AcctRg -ErrorAction SilentlyContinue | Sort-Object Name if ($AzVariables) { Section -Style NOTOCHeading6 -ExcludeFromTOC $LocalizedData.VariablesHeading { $VariableInfo = @() foreach ($Variable in $AzVariables) { $InObj = [Ordered]@{ $LocalizedData.Name = $Variable.Name $LocalizedData.Encrypted = if ($Variable.Encrypted) { $LocalizedData.Yes } else { $LocalizedData.No } $LocalizedData.Description = if ($Variable.Description) { $Variable.Description } else { $LocalizedData.None } } $VariableInfo += [PSCustomObject]$InObj } $TableParams = @{ Name = "$($LocalizedData.VariablesHeading) - $AcctName" List = $false ColumnWidths = 35, 15, 50 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $VariableInfo | Table @TableParams } } $AzSchedules = Get-AzAutomationSchedule -AutomationAccountName $AcctName -ResourceGroupName $AcctRg -ErrorAction SilentlyContinue | Sort-Object Name if ($AzSchedules) { Section -Style NOTOCHeading6 -ExcludeFromTOC $LocalizedData.SchedulesHeading { $ScheduleInfo = @() foreach ($Schedule in $AzSchedules) { $InObj = [Ordered]@{ $LocalizedData.Name = $Schedule.Name $LocalizedData.Enabled = if ($Schedule.IsEnabled) { $LocalizedData.Yes } else { $LocalizedData.No } $LocalizedData.Frequency = $Schedule.Frequency $LocalizedData.NextRun = $Schedule.NextRun } $ScheduleInfo += [PSCustomObject]$InObj } $TableParams = @{ Name = "$($LocalizedData.SchedulesHeading) - $AcctName" List = $false ColumnWidths = 30, 15, 20, 35 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $ScheduleInfo | Table @TableParams } } $AzCredentials = Get-AzAutomationCredential -AutomationAccountName $AcctName -ResourceGroupName $AcctRg -ErrorAction SilentlyContinue | Sort-Object Name if ($AzCredentials) { Section -Style NOTOCHeading6 -ExcludeFromTOC $LocalizedData.CredentialsHeading { $CredentialInfo = @() foreach ($Credential in $AzCredentials) { $InObj = [Ordered]@{ $LocalizedData.Name = $Credential.Name $LocalizedData.UserName = $Credential.UserName } $CredentialInfo += [PSCustomObject]$InObj } $TableParams = @{ Name = "$($LocalizedData.CredentialsHeading) - $AcctName" List = $false ColumnWidths = 40, 60 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $CredentialInfo | 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.State ColumnWidths = 35, 30, 20, 15 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $AzAutomationAccountInfo | Table @TableParams } } } } } catch { Write-PScriboMessage -IsWarning "$($LocalizedData.ErrorMessage) $($_.Exception.Message)" } } end {} } |