From 8632efdf8b645d98a16f59a39b2e5f785e7c5eef Mon Sep 17 00:00:00 2001 From: "Thomas S. Schmidt" Date: Thu, 27 Jun 2024 15:28:36 +0200 Subject: [PATCH 1/2] Enhanced MT.1024 Entra Recommendations to include impacted resources where available. --- .../Entra/Test-EntraRecommendations.Tests.ps1 | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1 b/tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1 index 3fbad18f..159988b9 100644 --- a/tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1 +++ b/tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1 @@ -1,6 +1,6 @@ BeforeDiscovery { $EntraIDPlan = Get-MtLicenseInformation -Product "EntraID" - $EntraRecommendations = Invoke-MtGraphRequest -DisableCache -ApiVersion beta -RelativeUri 'directory/recommendations' -OutputType Hashtable + $EntraRecommendations = Invoke-MtGraphRequest -DisableCache -ApiVersion beta -RelativeUri 'directory/recommendations?$expand=impactedResources' -OutputType Hashtable Write-Verbose "Found $($EntraRecommendations.Count) Entra recommendations" } @@ -9,7 +9,19 @@ Describe "Entra Recommendations" -Tag "Entra", "Security", "All", "Recommendatio #region Add detailed test description $ActionSteps = $actionSteps | Sort-Object -Property 'stepNumber' | Select-Object -ExpandProperty text -EA SilentlyContinue $ActionSteps = $ActionSteps -join "`n`n" - $ResultMarkdown = $insights + "`n`nRemediation actions:`n`n" + $ActionSteps + if ($status -ne 'completedBySystem' -and $impactedResources) { + $impactedResourcesList = "`n`n#### Impacted resources`n`n | Status | Name | First detected| `n" + $impactedResourcesList += "| --- | --- | --- |`n" + foreach ($resource in $impactedResources) { + if ($resource.status -eq 'completedBySystem') { + $resourceResult = "✅ Pass" + } else { + $resourceResult = "❌ Fail" + } + $impactedResourcesList += "| $($resourceResult) | [$($resource.displayName)]($($resource.portalUrl)) | $($resource.addedDateTime) | `n" + } + } + $ResultMarkdown = $insights + $impactedResourcesList + "`n`n#### Remediation actions:`n`n" + $ActionSteps Add-MtTestResultDetail -Description $benefits -Result $ResultMarkdown #endregion # Actual test From 20bbbb22ba7578260fdb65fa8f9534398bf6e4be Mon Sep 17 00:00:00 2001 From: "Thomas S. Schmidt" Date: Thu, 27 Jun 2024 15:42:15 +0200 Subject: [PATCH 2/2] Include URLs in remediation steps. --- tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1 b/tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1 index 159988b9..0ae972e3 100644 --- a/tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1 +++ b/tests/Maester/Entra/Test-EntraRecommendations.Tests.ps1 @@ -7,7 +7,9 @@ BeforeDiscovery { Describe "Entra Recommendations" -Tag "Entra", "Security", "All", "Recommendation" -ForEach $EntraRecommendations { It "MT.1024: Entra Recommendation - . See https://maester.dev/docs/tests/MT.1024" -Tag "MT.1024" { #region Add detailed test description - $ActionSteps = $actionSteps | Sort-Object -Property 'stepNumber' | Select-Object -ExpandProperty text -EA SilentlyContinue + $ActionSteps = $actionSteps | Sort-Object -Property 'stepNumber' | ForEach-Object { + $_.text + "[$($_.actionUrl.displayName)]($($_.actionUrl.url))." + } $ActionSteps = $ActionSteps -join "`n`n" if ($status -ne 'completedBySystem' -and $impactedResources) { $impactedResourcesList = "`n`n#### Impacted resources`n`n | Status | Name | First detected| `n"