Je travaille actuellement sur un script qui enverra un email une fois que les certificats liés aux IIS de mes serveurs web arriveront à leur date d'expiration. J'ai le script pour l'envoyer par email. Tout ce que j'ai besoin de savoir, c'est comment comparer les certificats disponibles dans la requête magasin par rapport aux certificats actuellement utilisés. Pour l'instant, voici ce que j'ai:Script Powershell pour trouver des certificats expirés liés dans IIS à distance
$Date= (Get-Date)
$SMTPServer = "smtp.test.com"
$From = "[email protected]"
Import-Module WebAdministration
$Servers = @("WEBSERVER1", "WEBSERVER2")
$certificates = foreach($server in $Servers){
Invoke-Command -ComputerName $server -ScriptBlock { $CertAll = Get-ChildItem -Path Cert:\LocalMachine\My }
Invoke-Command -ComputerName $server -ScriptBlock { $CertInUse = Get-ChildItem -Path IIS:\SslBindings }
Invoke-Command -ComputerName $server -ScriptBlock { $CertSame = Compare-Object -ReferenceObject $CertAll -DifferenceObject $CertInUse -Property Thumbprint -IncludeEqual -ExcludeDifferent }
Invoke-Command -ComputerName $server -ScriptBlock { $cert = $CertSame | ForEach {Get-ChildItem -Path Cert:\LocalMachine\My\$($_.thumbprint)} |
Select-Object Subject, DaysUntilExpired, NotAfter, @{n='ExpireInDays';e={($_.notafter - ($Date)).Days}}}
}
$certificates | Sort DisplayName
Toute aide et suggestion seraient appréciées. Merci!
Dois-je créer un seul 'Invoke-Command' par serveur? – Didge
@Didge exemple ajouté –
Je l'ai maintenant. Désolé pour la confusion monsieur. Mais je pense que je ne peux pas accéder à 'IIS: \ SslBindings'. J'ai toujours eu l'erreur qui dit: «Impossible de trouver le lecteur. Un lecteur avec le nom 'IIS' n'existe pas. ' Ceci est la partie, que je pense, où j'ai eu l'erreur: 'Get-ChildItem -Path IIS: \ SslBindings' – Didge