PI Services

Le blog des collaborateurs de PI Services

Verification de l’expiration des certificats d’un serveur ADCS: Check_ADCS_Certificat_Expiration

 

Le script ci-dessous utilise le module powershell PSPKI pour determiner les certificats arrivant a expiration dans $offset jours. (60 par defaut) et alerte si il y a au moins un certificat concernés.

Le module PSPKI est disponible sur le lien https://pspki.codeplex.com/

#SCRIPT DE RAPPORT DES CERTIFICATS ARRIVANT A EXPIRATION # ! : La variable $computername doit contenir imperativement le FQDN du serveur ADCS #Parametres param( [string]$computername = "$env:computername.$env:userdnsdomain", $offset = 60, $WarnNbCert = 1 ) $Scriptname = "Check_ADCS_Certificat_Expiration" #Verification de l'existence d'une source ayant le nom du script dans l'eventlog Application pour loguer certains events Function NewEventSource { if(!(Test-Path "HKLM:\SYSTEM\CurrentControlSet\services\eventlog\Application\$Scriptname")) { New-EventLog -LogName "Application" -Source $Scriptname } } #Log du lancement du script NewEventSource Write-EventLog -LogName application -Source $Scriptname -EntryType Information -EventId 1002 -Message "Execution du script $Scriptname" #Write-Host Write-Host “Rapport des certificats délivrés par $computername arrivant a expiration dans $offset jours” -ForegroundColor “Yellow” #Import PSPKI PowerShell module if(Get-Module -Name PSPKI | Where-Object { $_.name -eq “PSPKI” }) { Write-Host “PSPKI PowerShell module already imported…” -ForegroundColor “Yellow” } else { Write-Host “Importing PSPKI PowerShell module…” -ForegroundColor “Yellow” try { Import-Module -Name PSPKI } catch { write-host "Erreur lors de l'import du module PSPKI - Verifier que le module est disponible" } } Write-Host Write-Host $caname = $computername.ToLower() $todaysdate = Get-Date $count = Get-CertificationAuthority $caname | Get-IssuedRequest -Filter “NotAfter -ge $todaysdate”, “NotAfter -le $((Get-Date).AddDays($offset))” | Measure-Object | Select-Object -Property Count -ExpandProperty count $countdisplay = "Nombre de certificats délivrés par $computername arrivant a expiration dans $offset jours: $count `n" write-host -BackgroundColor white -ForegroundColor Blue $countdisplay $display = $(Get-CertificationAuthority $caname | Get-IssuedRequest -Filter "NotAfter -ge $todaysdate", "NotAfter -le $((Get-Date).AddDays($offset))") write-host "DETAILS:" $display $result = $display | foreach {$_.CommonName ; ":" ; $_.NotAfter ; " **** "} # Ajout a l'eventlog if ($count -ge $WarnNbCert) { NewEventSource Write-EventLog -LogName application -Source $Scriptname -EntryType Warning -EventId 1001 -Message "$countdisplay (CommonName : NotAfter) `n $result" } Else { NewEventSource Write-EventLog -LogName application -Source $Scriptname -EntryType Information -EventId 1000 -Message "$countdisplay" }

Ajouter un commentaire

Loading