我有* .cer文件,它们是驻留在我本地磁盘上的项目的一部分。它们没有安装在我的系统中。
说证书的位置是:C:\ Users \ wrick \ Source \ Repos \ MyProject \ Src \ Certificates \
现在我想运行一个PowerShell脚本,该脚本将为我提供90天内到期的* .cer文件列表。
这就是我写的:
Get-ChildItem -Recurse -Path C:\Users\wrick\Source\Repos\MyProject\Src\Certificates\ |
Select-Object -Property PSChildName, Subject,
@{n=’ExpireInDays’;e={($_.notafter – (Get-Date)).Days}} |
Where-Object {$_.ExpireInDays -lt 90 -and $_.Extension -like "*.cer"}
我添加了$_.Extension -like "*.cer"
部分,因为cert目录也有一些其他脚本文件。
运行此脚本时,我没有得到任何输出。
答案 0 :(得分:3)
你仍然可以在powershell中执行此操作,只需进入.Net框架并使用System.Security.Cryptography.X509Certificates.X509Certificate类。
#Filter for *.cer files as early as possible
Get-ChildItem -Recurse -Path C:\Users\wrick\Source\Repos\MyProject\Src\Certificates\ -Filter *.cer |
#grab the full file path, read in the cert, get the expiration date and convert to a datetime object
select FullName,@{name='ExpirationDate';e={[DateTime]([System.Security.Cryptography.X509Certificates.X509Certificate2]::CreateFromCertFile($_.FullName).GetExpirationDateString())}} |
#filter for those that expire within 90 days
Where-Object {$_.ExpirationDate -lt [DateTime]::Today.AddDays(90)}