我知道如何正常执行此操作,但问题是所有相关证书都没有安装在我的本地计算机上。我有一个源代码控制目录,里面存放着所有证书,我需要使用 powershell 遍历它们以查找哪些证书已过期。证书太多了,无法双击查看“有效期”信息,那么如何使用 powershell 获取这些信息呢?
答案1
我在玩证书时遇到了这个问题,我无法让上述代码工作,但我对其进行了修改以使用 GCI 和过滤器并且它工作了,谢谢!
gci C:\Users\myname\Documents\OT -Filter *.cer |
%{
$cert = New-Object Security.Cryptography.X509Certificates.X509Certificate2 $_.FullName
if ($cert.NotAfter -lt (Get-Date)) {
Write-Warning "$_ is expired"
}
}
答案2
如果它们存储在文件中,那么您可以X509Certificate2
从文件实例化一个对象,然后像通常一样检查到期日期:
dir c:\certs -Include *.cer, *.crt | %{
$cert = New-Object Security.Cryptography.X509Certificates.X509Certificate2 $_.FullName
if ($cert.NotAfter -lt (Get-Date)) {
Write-Warning "$_ is expired"
}
}