我正在努力解决在 Powershell 中查找未过期证书背后的逻辑。我有可能安装了多个安装了相同 CN 的证书,其中大多数已过期,至少有一个处于活动状态,可能有两个处于活动状态,持续一两周,同时进行手动续订。这给我带来了逻辑问题,我需要帮助。
到目前为止,我可以使用以下证书进行测试:
- FRIENDLYNAME,将于 2024 年 8 月 10 日到期
- FRIENDLYNAME,将于 2023 年 8 月 21 日到期
- FRIENDLYNAME,将于 2022 年 8 月 27 日到期
我有以下代码工作:
cd cert:\LocalMachine\my
$today = [DateTime]::Now
get-childitem | where { $_.Subject -match 'CN=FRIEDNLYNAME' -and $_.NotAfter -gt $today }
这确实仅准确地返回未过期的证书。然而,我可能有一段时间有两个 FRIENDLYNAME 证书可能处于活动状态,作为使用上面列表的示例,第 2 个证书在安装第 1 个证书时处于活动状态两周。
我的逻辑问题是,如何让 Powershell 仅返回绝对最新的可能过期证书?我知道最简单的答案是正确清理环境并确保仅安装活动证书,但如果我无法做到这一点,如何使 Powershell 逻辑对我有利?
您可以简单地对输出进行排序
Sort-Object
,然后选择最后一个对象Select-Object
,它是-Last
参数。