From b163f1404e87af12c4bd494c1b702fd365df9b54 Mon Sep 17 00:00:00 2001 From: Linda Date: Thu, 9 Apr 2026 14:33:43 +0200 Subject: [PATCH 1/9] fix: resolve PSScriptAnalyzer warnings and cost report null issue - Add CmdletBinding(SupportsShouldProcess) to Update-SKUPropertySet, Set-ColumnColor, New-Worksheet, Set-SvcAvailReportObj - Fix cost date range from 1 day to 30 days in Invoke-CostReportSchedule - Guard Get-MeterId call against null costDetails --- 1-Collect/Get-AzureServices.ps1 | 4 ++-- 2-AvailabilityCheck/Get-AvailabilityInformation.ps1 | 1 + 7-Report/Get-Report.ps1 | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/1-Collect/Get-AzureServices.ps1 b/1-Collect/Get-AzureServices.ps1 index 6336b1f..ba1bd58 100644 --- a/1-Collect/Get-AzureServices.ps1 +++ b/1-Collect/Get-AzureServices.ps1 @@ -216,7 +216,7 @@ Function Invoke-CostReportSchedule { [Parameter(Mandatory = $true)] [string]$SubscriptionId ) $uri = "https://management.azure.com/subscriptions/$($SubscriptionId)/providers/Microsoft.CostManagement/generateCostDetailsReport?api-version=2025-03-01" - $startDate = (Get-Date).AddDays(-1) + $startDate = (Get-Date).AddDays(-30) $endDate = (Get-Date) # Define the request body $body = @{ @@ -356,7 +356,7 @@ $baseResult | ForEach-Object { ipAddress = $ipAddress meterIds = @() } - If ($includeCost) { + If ($includeCost -and $null -ne $costDetails) { Get-MeterId -ResourceId $resourceId -csvObject $costDetails # add meterIds to the output object $outObject.meterIds += $meterIds diff --git a/2-AvailabilityCheck/Get-AvailabilityInformation.ps1 b/2-AvailabilityCheck/Get-AvailabilityInformation.ps1 index ef1ab24..e87a77c 100644 --- a/2-AvailabilityCheck/Get-AvailabilityInformation.ps1 +++ b/2-AvailabilityCheck/Get-AvailabilityInformation.ps1 @@ -368,6 +368,7 @@ function Initialize-SKU2Region { } } function Update-SKUPropertySet { + [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory)] [string]$RegionName, [Parameter(Mandatory)] [pscustomobject]$Object, diff --git a/7-Report/Get-Report.ps1 b/7-Report/Get-Report.ps1 index 4f145d1..a93c944 100644 --- a/7-Report/Get-Report.ps1 +++ b/7-Report/Get-Report.ps1 @@ -18,6 +18,7 @@ param( ) Function Set-ColumnColor { + [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory = $true)] [object]$startColumn, [Parameter(Mandatory = $true)] [string[]]$cellValGreen, @@ -44,6 +45,7 @@ Function Set-ColumnColor { } Function New-Worksheet { + [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory = $true)][string]$WorksheetName, [Parameter(Mandatory = $true)][int]$LastColumnNumber, @@ -94,6 +96,7 @@ Function Get-PropertySet { } Function Set-SvcAvailReportObj { + [CmdletBinding(SupportsShouldProcess)] param ( [string]$resourceType, [int]$resourceCount, From af1ce3f0e7e7a73ddd3c3dd45680dc683392aef2 Mon Sep 17 00:00:00 2001 From: Linda Date: Thu, 9 Apr 2026 14:39:08 +0200 Subject: [PATCH 2/9] fix: use SuppressMessageAttribute instead of SupportsShouldProcess for internal helpers --- 7-Report/Get-Report.ps1 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/7-Report/Get-Report.ps1 b/7-Report/Get-Report.ps1 index a93c944..a65f360 100644 --- a/7-Report/Get-Report.ps1 +++ b/7-Report/Get-Report.ps1 @@ -18,7 +18,8 @@ param( ) Function Set-ColumnColor { - [CmdletBinding(SupportsShouldProcess)] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding()] param( [Parameter(Mandatory = $true)] [object]$startColumn, [Parameter(Mandatory = $true)] [string[]]$cellValGreen, @@ -45,7 +46,8 @@ Function Set-ColumnColor { } Function New-Worksheet { - [CmdletBinding(SupportsShouldProcess)] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding()] param ( [Parameter(Mandatory = $true)][string]$WorksheetName, [Parameter(Mandatory = $true)][int]$LastColumnNumber, @@ -96,7 +98,8 @@ Function Get-PropertySet { } Function Set-SvcAvailReportObj { - [CmdletBinding(SupportsShouldProcess)] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [CmdletBinding()] param ( [string]$resourceType, [int]$resourceCount, From d9f4db1e69d6ee78860790871aa528572ad255c0 Mon Sep 17 00:00:00 2001 From: Linda Date: Thu, 9 Apr 2026 14:41:11 +0200 Subject: [PATCH 3/9] fix: add OutputType attribute to New-Worksheet --- 7-Report/Get-Report.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/7-Report/Get-Report.ps1 b/7-Report/Get-Report.ps1 index a65f360..1799a00 100644 --- a/7-Report/Get-Report.ps1 +++ b/7-Report/Get-Report.ps1 @@ -48,6 +48,7 @@ Function Set-ColumnColor { Function New-Worksheet { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] [CmdletBinding()] + [OutputType([string])] param ( [Parameter(Mandatory = $true)][string]$WorksheetName, [Parameter(Mandatory = $true)][int]$LastColumnNumber, From 8dbf0988cc9c4776108a0cb1ef578851c91524eb Mon Sep 17 00:00:00 2001 From: Linda Petersson <38290892+lvlindv@users.noreply.github.com> Date: Fri, 10 Apr 2026 10:45:40 +0200 Subject: [PATCH 4/9] Update 7-Report/Get-Report.ps1 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- 7-Report/Get-Report.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/7-Report/Get-Report.ps1 b/7-Report/Get-Report.ps1 index 1799a00..d13586e 100644 --- a/7-Report/Get-Report.ps1 +++ b/7-Report/Get-Report.ps1 @@ -18,7 +18,7 @@ param( ) Function Set-ColumnColor { - [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', 'This helper only applies in-memory formatting to the Excel worksheet during report generation and does not perform external or destructive state changes.')] [CmdletBinding()] param( [Parameter(Mandatory = $true)] [object]$startColumn, From 2f9de474aa1c44944463e713622576bb5bb8d502 Mon Sep 17 00:00:00 2001 From: Linda Petersson <38290892+lvlindv@users.noreply.github.com> Date: Fri, 10 Apr 2026 10:46:28 +0200 Subject: [PATCH 5/9] Update 7-Report/Get-Report.ps1 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- 7-Report/Get-Report.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/7-Report/Get-Report.ps1 b/7-Report/Get-Report.ps1 index d13586e..adbe65f 100644 --- a/7-Report/Get-Report.ps1 +++ b/7-Report/Get-Report.ps1 @@ -99,7 +99,7 @@ Function Get-PropertySet { } Function Set-SvcAvailReportObj { - [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] + [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', 'This helper only constructs and returns an in-memory PSCustomObject for reporting and does not modify external state.')] [CmdletBinding()] param ( [string]$resourceType, From da3f0a68f167ea5f21739ebc72fe95ad28e5cd64 Mon Sep 17 00:00:00 2001 From: Linda Petersson <38290892+lvlindv@users.noreply.github.com> Date: Fri, 10 Apr 2026 10:48:38 +0200 Subject: [PATCH 6/9] Remove CmdletBinding from Update-SKUPropertySet Removed CmdletBinding attribute from Update-SKUPropertySet function. --- 2-AvailabilityCheck/Get-AvailabilityInformation.ps1 | 1 - 1 file changed, 1 deletion(-) diff --git a/2-AvailabilityCheck/Get-AvailabilityInformation.ps1 b/2-AvailabilityCheck/Get-AvailabilityInformation.ps1 index e87a77c..ef1ab24 100644 --- a/2-AvailabilityCheck/Get-AvailabilityInformation.ps1 +++ b/2-AvailabilityCheck/Get-AvailabilityInformation.ps1 @@ -368,7 +368,6 @@ function Initialize-SKU2Region { } } function Update-SKUPropertySet { - [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory)] [string]$RegionName, [Parameter(Mandatory)] [pscustomobject]$Object, From f2f982e37725cc1e49c1dd3323d4e982ac00c353 Mon Sep 17 00:00:00 2001 From: Linda Petersson <38290892+lvlindv@users.noreply.github.com> Date: Fri, 10 Apr 2026 10:49:30 +0200 Subject: [PATCH 7/9] Refactor Set-ColumnColor function parameters Removed SuppressMessage attribute and CmdletBinding from Set-ColumnColor function. --- 7-Report/Get-Report.ps1 | 2 -- 1 file changed, 2 deletions(-) diff --git a/7-Report/Get-Report.ps1 b/7-Report/Get-Report.ps1 index adbe65f..0617e41 100644 --- a/7-Report/Get-Report.ps1 +++ b/7-Report/Get-Report.ps1 @@ -18,8 +18,6 @@ param( ) Function Set-ColumnColor { - [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', 'This helper only applies in-memory formatting to the Excel worksheet during report generation and does not perform external or destructive state changes.')] - [CmdletBinding()] param( [Parameter(Mandatory = $true)] [object]$startColumn, [Parameter(Mandatory = $true)] [string[]]$cellValGreen, From 86d7556448d45c53c3a1095b3c8e78714cd4b830 Mon Sep 17 00:00:00 2001 From: Linda Petersson <38290892+lvlindv@users.noreply.github.com> Date: Fri, 10 Apr 2026 10:49:59 +0200 Subject: [PATCH 8/9] Refactor New-Worksheet function attributes Removed unnecessary attributes from New-Worksheet function. --- 7-Report/Get-Report.ps1 | 3 --- 1 file changed, 3 deletions(-) diff --git a/7-Report/Get-Report.ps1 b/7-Report/Get-Report.ps1 index 0617e41..bec7941 100644 --- a/7-Report/Get-Report.ps1 +++ b/7-Report/Get-Report.ps1 @@ -44,9 +44,6 @@ Function Set-ColumnColor { } Function New-Worksheet { - [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] - [CmdletBinding()] - [OutputType([string])] param ( [Parameter(Mandatory = $true)][string]$WorksheetName, [Parameter(Mandatory = $true)][int]$LastColumnNumber, From 241a4f0797235f1611f3eb5d45b79145a37bd5b2 Mon Sep 17 00:00:00 2001 From: Linda Petersson <38290892+lvlindv@users.noreply.github.com> Date: Fri, 10 Apr 2026 10:50:52 +0200 Subject: [PATCH 9/9] Refactor Set-SvcAvailReportObj function Removed unnecessary SuppressMessageAttribute and CmdletBinding from Set-SvcAvailReportObj function. --- 7-Report/Get-Report.ps1 | 2 -- 1 file changed, 2 deletions(-) diff --git a/7-Report/Get-Report.ps1 b/7-Report/Get-Report.ps1 index bec7941..4f145d1 100644 --- a/7-Report/Get-Report.ps1 +++ b/7-Report/Get-Report.ps1 @@ -94,8 +94,6 @@ Function Get-PropertySet { } Function Set-SvcAvailReportObj { - [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', 'This helper only constructs and returns an in-memory PSCustomObject for reporting and does not modify external state.')] - [CmdletBinding()] param ( [string]$resourceType, [int]$resourceCount,