From 503041fa0bc9ef44831ecf3e887588e15a022fd1 Mon Sep 17 00:00:00 2001
From: Danny de Kooker
Date: Mon, 17 Feb 2025 18:08:50 +0100
Subject: [PATCH] Extended script with app Registration certificates
---
Azure/Azure-App-Expiration.ps1 | 71 +++++++++++++++++++++++++++++++---
1 file changed, 65 insertions(+), 6 deletions(-)
diff --git a/Azure/Azure-App-Expiration.ps1 b/Azure/Azure-App-Expiration.ps1
index ffbf7c0..bcc99ec 100644
--- a/Azure/Azure-App-Expiration.ps1
+++ b/Azure/Azure-App-Expiration.ps1
@@ -26,7 +26,7 @@
#region Global script settings and variables
#General
- $Version = "v1.0"
+ $Version = "v1.1"
$logfilelocation = "$($MyInvocation.MyCommand.Path | Split-Path -Parent)\Logs"
$logfilename = "$(Get-Date -Format yyyyMMddHHmmss)-Azure-App-Expiration-Report.log"
$summaryfilename = "$(Get-Date -Format yyyyMMddHHmmss)-Azure-App-Expiration-Summary.txt"
@@ -123,10 +123,10 @@
#endregion
#region execute script
- #Collect all app information
- $AzureADApps = Get-MgApplication | Sort-Object DisplayName
- $AppCertificateDetails = @() #Initiate the array to store the collected information
+ #Collect all app Registration information
+ $AzureADApps = Get-MgApplication -all | Sort-Object DisplayName
$AppClientSecretsDetails = @() #Initiate the array to store the collected information
+ $AppCertificateDetails = @() #Initiate the array to store the collected information
foreach ($App in $AzureADApps) {
#Script should be extended to also include Certificates, preparations are already made.
@@ -151,6 +151,27 @@
}
}
}
+ #Collect Client Secret details if available
+ if ($null -ne $App.KeyCredentials) {
+ foreach ($KeyCredential in $App.KeyCredentials) {
+ #Calculate remaining days
+ $RemainingDays = New-TimeSpan -Start $(Get-Date) -End $KeyCredential.EndDateTime
+ $DaysRemaining = $RemainingDays.Days
+ switch ($DaysRemaining) {
+ {$_ -le '0'} {$CalculatedStatus = "ERROR"}
+ {$_ -le $WarningDays} {$CalculatedStatus = "WARNING"}
+ Default {$CalculatedStatus = "OK"}
+ }
+
+ $AppCertificateDetails += [PSCustomObject]@{
+ AppDisplayName = $App.DisplayName
+ CertificateName = $KeyCredential.Displayname
+ Enddate = $KeyCredential.EndDateTime
+ DaysRemaining = $DaysRemaining
+ Status = $CalculatedStatus
+ }
+ }
+ }
}
#endregion
@@ -183,7 +204,7 @@ $htmlReport = @"
Script version: $Version
"@
if ("" -ne $AppClientSecretsDetails) { $htmlReport += @"
- Application Secrets Overview
+ App Registration Secrets Overview
| App DisplayName |
@@ -195,7 +216,6 @@ $htmlReport = @"
"@
foreach ($AppClientSecretsDetail in $AppClientSecretsDetails) {
$htmlReport += @"
-
| $($AppClientSecretsDetail.AppDisplayName) |
$($AppClientSecretsDetail.SecretName) |
@@ -207,6 +227,34 @@ $htmlReport = @"
default {"$($AppClientSecretsDetail.Status) | "}
} )
+"@
+ }
+ $htmlReport += "
"
+ }
+ if ("" -ne $AppCertificateDetails) { $htmlReport += @"
+ App Registration Certificates Overview
+
+
+ | App DisplayName |
+ Certificate Name |
+ Enddate |
+ Days Remaining |
+ Status |
+
+"@
+ foreach ($AppCertificateDetail in $AppCertificateDetails) {
+ $htmlReport += @"
+
+ | $($AppCertificateDetail.AppDisplayName) |
+ $($AppCertificateDetail.CertificateName) |
+ $($AppCertificateDetail.Enddate) |
+ $($AppCertificateDetail.DaysRemaining) |
+ $(switch ($AppCertificateDetail.Status) {
+ 'ERROR' {"$($AppCertificateDetail.Status) | "}
+ 'WARNING' {"$($AppCertificateDetail.Status) | "}
+ default {"$($AppCertificateDetail.Status) | "}
+ } )
+
"@
}
$htmlReport += "
"
@@ -250,5 +298,16 @@ $htmlReport = @"
Write-Summary "Status: $($AppClientSecretsDetail.Status)"
}
}
+ if ("" -ne $AppCertificateDetails) {
+ Write-Summary "App Client Secrets"
+ foreach ($AppCertificateDetail in $AppCertificateDetails) {
+ Write-Summary "******************"
+ Write-Summary "App DisplayName: $($AppCertificateDetail.AppDisplayName)"
+ Write-Summary "Certificate Name: $($AppCertificateDetail.CertificateName)"
+ Write-Summary "Enddate: $($AppCertificateDetail.Enddate)"
+ Write-Summary "Days Remaining: $($AppCertificateDetail.DaysRemaining)"
+ Write-Summary "Status: $($AppCertificateDetail.Status)"
+ }
+ }
Write-Summary "---------------------------"
#endregion
\ No newline at end of file