여기에 다른 웹 서버의 IIS에서 바인딩 된 인증서에서 필요한 정보를 반환하는 스크립트가 있습니다.PSCustomObject에서 반환 한 ExpiryInDays 데이터가 30보다 작거나 같으면 PowerShell에서 전자 메일 알림을 트리거합니다.
$Date = Get-Date
$servers = Get-Content C:\servers.txt
$cert = Foreach ($server in $servers) {
Invoke-Command -ComputerName $server -ScriptBlock{
Import-Module WebAdministration; Get-ChildItem -Path IIS:SslBindings | ForEach-Object -Process{
if ($_.Sites)
{
$certificate = Get-ChildItem -Path CERT:LocalMachine\My |
Where-Object -Property Thumbprint -EQ -Value $_.Thumbprint
[PSCustomObject]@{
Sites = $_.Sites.Value
DnsNameList = $certificate.DnsNameList
NotAfter = $certificate.NotAfter
ExpireInDays = ($certificate.NotAfter - (Get-Date)).Days}
}
}
}
}
$cert | Select PSComputerName, DnsNameList, NotAfter, ExpireInDays | Where-Object {$_.ExpireInDays -lt 30} | Out-File C:\results.txt
이 출력이 메모장의 모습입니다 :
는PSComputerName DnsNameList NotAfter ExpireInDays
-------------- ----------- -------- ------------
ComputerName {URL.com} 1/1/2050 11:59:59 PM 11744
이 지원 세부 인증서의 긴 목록을 반환합니다. 내가해야 할 일은 인증서의 세부 사항을 30 일 이내에 다른 TXT 파일로 보내서 내용을 파싱하거나 전자 메일 알림에 파일 자체를 첨부하는 것입니다.
이 스크립트를 해결하거나 단순화 할 수있는 다른 방법이 있다고 생각되는 경우 매우 권장 사항을 제시합니다. 미리 감사드립니다. 나는 비슷한 작업에 사용하는 스크립트에서 가져온이 같은
[Send-MailMessage] (https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Send-MailMessage?view=powershell-5.1) – TheIncorrigible1
글쎄, 나는 패스해야한다. PSCustomObject에서 반환 된 데이터 ExpireInDays 열의 값을 확인하여 전자 메일 경고를 트리거해야합니다. 나는 이메일 알림을 만드는 방법을 알고 있습니다. 나는 VBscript와 PowerShell에서 그것을 할 수있다. – Didge
'If ($ Cert.ExpireInDays -lt $ condition) {...} ' – TheIncorrigible1