すべてのドメイン Windowsサーバーで今後30日以内に有効期限が切れる証明書を見つける 便利なPowerShellスクリプト

すべてのドメインサーバーで今後30日以内に有効期限が切れる証明書を見つける 便利なPowerShellスクリプト情報がありましたので、共有します。


証明書関連はトラブルになることが多いので知っていると便利です。

 

質問の抜粋です。

 

こんにちは!SSL証明書の有効期限が切れたときに表示する方法を理解しようとしています。現在、次のコード (同僚から提供されたもの) があり、証明書の有効期限を表示する方法を知りたいです。可能であれば、特定の時間枠で有効期限が切れる証明書を表示する方法があるかどうかも知りたいです (つまり、6 月 1 日から 7 月 1 日の間に有効期限が切れる SSL 証明書を表示するか、6 月 25 日にのみ有効期限が切れる証明書を表示します)。事前に助けてくれてありがとう!



一つ目の回答です。

 

これは、スクリプトで明示的な日付または証明書の有効期限の範囲を確認するための開始点として使用できます。

===

$certHash = "D3A6E7B1746DFA37D4B93263AAA1348A2BA41720"  
Get-ChildItem -Path cert:\LocalMachine\My -Recurse |   
    Where-Object {$_.Thumbprint -eq $cert} |  
        Select-Object NotAfter  

===

 



二つ目の回答です。

 

すべてのドメイン サーバーで今後 30 日以内に有効期限が切れる証明書を見つけるには、次の PowerShell スクリプトを使用します。

===

$servers= (Get-ADComputer -LDAPFilter "(&(objectCategory=computer)(operatingSystem=Windows Server*) (!serviceprincipalname=MSClusterVirtualServer) (!(userAccountControl:1.2.840.113556.1.4.803:=2)))").Name
$result=@()
foreach ($server in $servers)
{
$ErrorActionPreference="SilentlyContinue"
$getcert=Invoke-Command -ComputerName $server { Get-ChildItem -Path Cert:\LocalMachine\My -Recurse -ExpiringInDays 30}
foreach ($cert in $getcert) {
$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Server'=$server;
'Certificate'=$cert.Issuer;
'Expires'=$cert.NotAfter
})
}
}
Write-Output $result

===

 

 

一番下のスクリプトは実際に動かしてみて動作しました。これをファイルに出力するようにして記載があればメール通知するなどの仕組みにすれば自動化できます。

 

「引用元」
https://learn.microsoft.com/en-us/answers/questions/892628/display-ssl-certificate-expiration-dates-via-power

 

モバイルバッテリー 軽量 薄型 大容量 10000mAh 2023最新 QC3.0対応 USB Type-C出力&PD22.5W 超急速充電 スマホ充電器 携帯充電器 小型モバイル・バッテリー 3台同時充電でき LCD残量表示 旅行/出張/アウトドア停電/防災緊急用の必携品 iPhone 14 Pro Max iPhone 14 13 12 11 X XS iPad OPPO Samsung Xiaomi Sony Xperia など各種対応 (Black)