gpt4 book ai didi

powershell - 使用 Powershell 删除过期证书

转载 作者:行者123 更新时间:2023-12-02 22:20:08 25 4
gpt4 key购买 nike

我有一个简单的脚本来显示服务器上的所有证书,我想扩展该脚本以删除所有过期的证书

我已经尝试了来自 MS 和 3rd 方的几个脚本来查找删除证书,但它们无法正常工作

我使用的第一个代码是:

Get-ChildItem Cert:\-Recurse

此 Powershell 脚本显示服务器上的所有证书。

每个证书的示例输出如下。我想定位 NotAfter 字段并让脚本然后删除证书,如果它比今天的日期旧

主题:
发行人:
指纹:
友好名称:
不是之前:
之后:
扩展

我还想为服务器列表执行此操作,在文本文档中的每个服务器上运行脚本,查询所有证书,然后删除过期的证书并移至下一个服务器。

我见过一些针对日期的代码,如下所示:

ForEach-Object -begin { $now = get-date } -process { if ($PSItem.NotAfter -lt $now ) { $PSItem } } |删除项目

我希望脚本出去查询服务器证书,然后删除过期的证书

最佳答案

你所追求的是这个。这应该非常适合您。你的逻辑很接近,只是执行似乎有点偏离。

$ListOfServers = Get-Content "c:\temp\serv.txt"

Foreach($Server in $ListOfServers) {
Invoke-Command -ComputerName $Server -ScriptBlock {
# Get Certificate list and assign to a variable
$Certs = Get-ChildItem "Cert:\LocalMachine\My" -Recurse

# Loop through each object in $Certs
Foreach($Cert in $Certs) {
# If The objects property "NotAfter" is older than the current time, delete
If($Cert.NotAfter -lt (Get-Date)) {
$Cert | Remove-Item
}
}
}
}

根据评论进行编辑,以防止意外破坏所有证书。

获取所有证书存储位置的列表。
(Get-ChildItem -Path "Cert:" -Recurse `
| Where-Object {($_).GetType().Name -eq 'X509Store'}).Name

关于powershell - 使用 Powershell 删除过期证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56140439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com