Modules/Extras/ARIAdvisoryInv.psm1

<#
.Synopsis
Advisory Module
 
.DESCRIPTION
This script process and creates the Advisory sheet based on advisorresources.
 
.Link
https://github.com/microsoft/ARI/Extras/ARIAdvisoryInv.psm1
 
.COMPONENT
    This powershell Module is part of Azure Resource Inventory (ARI)
 
.NOTES
Version: 4.0.1
First Release Date: 15th Oct, 2024
Authors: Claudio Merola
 
#>

function Invoke-ARIAdvisoryProcessing {
    param($Advisories)

    $obj = ''
    $tmp = @()

    foreach ($1 in $Advisories)
        {
            if($1)
                {
                    $data = $1.PROPERTIES

                    if($null -eq $data.extendedProperties.annualSavingsAmount){$Savings = 0}Else{$Savings = $data.extendedProperties.annualSavingsAmount}
                    if($null -eq $data.extendedProperties.savingsCurrency){$SavingsCurrency = 'USD'}Else{$SavingsCurrency = $data.extendedProperties.savingsCurrency}
                    $obj = @{
                        'ResourceGroup'          = $1.RESOURCEGROUP;
                        'Affected Resource Type' = $data.impactedField;
                        'Name'                   = $data.impactedValue;
                        'Category'               = $data.category;
                        'Impact'                 = $data.impact;
                        #'Score' = $data.extendedproperties.score;
                        'Problem'                = $data.shortDescription.problem;
                        'Savings Currency'       = $SavingsCurrency;
                        'Annual Savings'         = "=$Savings";
                        'Savings Region'         = $data.extendedProperties.location;
                        'Current SKU'            = $data.extendedProperties.currentSku;
                        'Target SKU'             = $data.extendedProperties.targetSku
                    }
                    $tmp += $obj
                }
        }
    $tmp
}

function Build-ARIAdvisoryReport {
    param($File, $Adv, $TableStyle)
    $condtxtadv = $(New-ConditionalText High -Range E:E
    New-ConditionalText Security -Range D:D -BackgroundColor Wheat)

    $Style = New-ExcelStyle -HorizontalAlignment Center -AutoSize -NumberFormat '#,##0.00' -Range H:H

    $Adv |
    ForEach-Object { [PSCustomObject]$_ } |
    Select-Object 'ResourceGroup',
    'Affected Resource Type',
    'Name',
    'Category',
    'Impact',
    #'Score',
    'Problem',
    'Savings Currency',
    'Annual Savings',
    'Savings Region',
    'Current SKU',
    'Target SKU' |
    Export-Excel -Path $File -WorksheetName 'Advisory' -AutoSize -MaxAutoSizeRows 100 -TableName 'AzureAdvisory' -MoveToStart -TableStyle $tableStyle -Style $Style -ConditionalText $condtxtadv -KillExcel
}