mirror of
https://github.com/admindroid-community/powershell-scripts.git
synced 2025-12-17 08:25:20 +00:00
Code improvements
This commit is contained in:
parent
245e06e50b
commit
00e256d645
@ -1,7 +1,7 @@
|
|||||||
<#
|
<#
|
||||||
=============================================================================================
|
=============================================================================================
|
||||||
Name: Send Microsoft Entra App Credentials Expiry Notifications
|
Name: Send Microsoft Entra App Credentials Expiry Notifications
|
||||||
Version: 1.0
|
Version: 1.1
|
||||||
Website: o365reports.com
|
Website: o365reports.com
|
||||||
|
|
||||||
Script Highlights:
|
Script Highlights:
|
||||||
@ -15,6 +15,12 @@ Script Highlights:
|
|||||||
7. It can be executed with certificate-based authentication (CBA) too.
|
7. It can be executed with certificate-based authentication (CBA) too.
|
||||||
8. The script is scheduler-friendly.
|
8. The script is scheduler-friendly.
|
||||||
|
|
||||||
|
Change Log
|
||||||
|
~~~~~~~~~~
|
||||||
|
V1.0 (Apr 29, 2025) - File created
|
||||||
|
V1.1 (Jun 14, 2025) - Minor code improvements.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
For detailed Script execution: https://o365reports.com/2025/04/29/send-entra-app-credential-expiry-notifications
|
For detailed Script execution: https://o365reports.com/2025/04/29/send-entra-app-credential-expiry-notifications
|
||||||
============================================================================================
|
============================================================================================
|
||||||
@ -35,13 +41,8 @@ Param
|
|||||||
[string]$CertificateThumbprint
|
[string]$CertificateThumbprint
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
$Date = Get-Date
|
|
||||||
$CSVFilePath ="$(Get-Location)\AppCertsAndSecretsExpiryNotificationSummary_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
$CSVFilePath ="$(Get-Location)\AppCertsAndSecretsExpiryNotificationSummary_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||||
|
|
||||||
|
|
||||||
# Function to connect to Microsoft Graph
|
|
||||||
function Connect_ToMgGraph {
|
|
||||||
# Check if Microsoft Graph module is installed
|
# Check if Microsoft Graph module is installed
|
||||||
$MsGraphModule = Get-Module Microsoft.Graph -ListAvailable
|
$MsGraphModule = Get-Module Microsoft.Graph -ListAvailable
|
||||||
if ($MsGraphModule -eq $null) {
|
if ($MsGraphModule -eq $null) {
|
||||||
@ -70,20 +71,37 @@ function Connect_ToMgGraph {
|
|||||||
# Verify connection
|
# Verify connection
|
||||||
if ((Get-MgContext) -ne $null) {
|
if ((Get-MgContext) -ne $null) {
|
||||||
if ((Get-MgContext).Account -ne $null) {
|
if ((Get-MgContext).Account -ne $null) {
|
||||||
Write-Host "Connected to Microsoft Graph PowerShell using account: $((Get-MgContext).Account)"
|
$LoggedInAccount = (Get-MgContext).Account
|
||||||
|
if([string]::IsNullOrEmpty($FromAddress)) {
|
||||||
|
$FromAddress = $LoggedInAccount
|
||||||
|
}
|
||||||
|
Write-Host "Connected to Microsoft Graph PowerShell using account: $($LoggedInAccount)"
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Write-Host "Connected to Microsoft Graph PowerShell using certificate-based authentication."
|
Write-Host "Connected to Microsoft Graph PowerShell using certificate-based authentication."
|
||||||
|
if ([string]::IsNullOrEmpty($FromAddress)) {
|
||||||
|
Write-Host "`nError: FromAddress is required when using certificate-based authentication." -ForegroundColor Red
|
||||||
|
Exit
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Write-Host "Failed to connect to Microsoft Graph." -ForegroundColor Red
|
Write-Host "Failed to connect to Microsoft Graph." -ForegroundColor Red
|
||||||
Exit
|
Exit
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Function to Send Email
|
# Function to Send Email
|
||||||
function SendEmail {
|
function SendEmail {
|
||||||
|
$EmailAddresses = ($Recipients -split ",").Trim()
|
||||||
|
$toRecipients = @()
|
||||||
|
foreach ($Email in $EmailAddresses) {
|
||||||
|
$toRecipients += @{
|
||||||
|
emailAddress = @{
|
||||||
|
address = $Email
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$Script:TableContent += "</table>"
|
$Script:TableContent += "</table>"
|
||||||
$TableStyle = "<style>
|
$TableStyle = "<style>
|
||||||
table { width: 100%; border-collapse: collapse; font-family: Arial, sans-serif; }
|
table { width: 100%; border-collapse: collapse; font-family: Arial, sans-serif; }
|
||||||
@ -109,30 +127,16 @@ function SendEmail {
|
|||||||
toRecipients = $toRecipients
|
toRecipients = $toRecipients
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Send-MgUserMail -UserId $FromAddress -BodyParameter $params
|
Send-MgUserMail -UserId $FromAddress -BodyParameter $params
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Connect_ToMgGraph
|
|
||||||
$LoggedInAccount = (Get-MgContext).Account
|
|
||||||
if ($LoggedInAccount -ne $null){
|
|
||||||
if ([string]::IsNullOrEmpty($FromAddress)) {
|
|
||||||
$FromAddress = $LoggedInAccount
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ([string]::IsNullOrEmpty($FromAddress)) {
|
|
||||||
Write-Host "`nError: FromAddress is required when using certificate-based authentication." -ForegroundColor Red
|
|
||||||
Exit
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$ExportResult = $null
|
$ExportResult = $null
|
||||||
$AppCount = 0
|
$AppCount = 0
|
||||||
$Script:ProcessedCount = 0
|
$Script:ProcessedCount = 0
|
||||||
$RequiredProperties=@('DisplayName','AppId','Id','KeyCredentials','PasswordCredentials','CreatedDateTime','SigninAudience')
|
$RequiredProperties=@('DisplayName','AppId','Id','KeyCredentials','PasswordCredentials','CreatedDateTime','SigninAudience')
|
||||||
|
|
||||||
|
|
||||||
if(($CertificatesOnly.IsPresent) -or ($ClientSecretsOnly.IsPresent) -or ($SoonToExpireInDays -ne "")) {
|
if(($CertificatesOnly.IsPresent) -or ($ClientSecretsOnly.IsPresent) -or ($SoonToExpireInDays -ne "")) {
|
||||||
$SwitchPresent=$True
|
$SwitchPresent=$True
|
||||||
}
|
}
|
||||||
@ -140,7 +144,6 @@ else {
|
|||||||
$SwitchPresent=$false
|
$SwitchPresent=$false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Create an HTML table with data
|
# Create an HTML table with data
|
||||||
$Script:TableContent = "<table>"
|
$Script:TableContent = "<table>"
|
||||||
$Script:TableContent += "<tr><th>App Name</th><th>App Creation Time</th><th>Credential Type</th><th>Credential Name</th><th>Creation Time</th><th>Expiry Date</th><th>Friendly Expiry Date</th></tr>"
|
$Script:TableContent += "<tr><th>App Name</th><th>App Creation Time</th><th>Credential Type</th><th>Credential Name</th><th>Creation Time</th><th>Expiry Date</th><th>Friendly Expiry Date</th></tr>"
|
||||||
@ -160,16 +163,6 @@ Get-MgApplication -All -Property $RequiredProperties | ForEach-Object {
|
|||||||
|
|
||||||
if($owners -eq "") { $Owners="-" }
|
if($owners -eq "") { $Owners="-" }
|
||||||
|
|
||||||
$EmailAddresses = ($Recipients -split ",").Trim()
|
|
||||||
$toRecipients = @()
|
|
||||||
foreach ($Email in $EmailAddresses) {
|
|
||||||
$toRecipients += @{
|
|
||||||
emailAddress = @{
|
|
||||||
address = $Email
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#Process through Secret keys
|
#Process through Secret keys
|
||||||
if(!($CertificatesOnly.IsPresent) -or ($SwitchPresent -eq $false)) {
|
if(!($CertificatesOnly.IsPresent) -or ($SwitchPresent -eq $false)) {
|
||||||
foreach($Secret in $Secrets) {
|
foreach($Secret in $Secrets) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user