【问题标题】:Remove Expired Certificates with Powershell使用 Powershell 删除过期证书
【发布时间】:2019-10-02 01:44:07
【问题描述】:

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

我已经尝试了来自 MS 和第 3 方的几个脚本来找到删除证书,但没有让它们正常工作

我使用的第一个代码是:

Get-ChildItem Cert:\ -Recurse

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

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

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

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

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

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

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

【问题讨论】:

    标签: powershell certificate ssl-certificate x509certificate client-certificates


    【解决方案1】:

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

    $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
    

    【讨论】:

    • 请注意,您不得在个人(我的)证书存储之外执行脚本。操作系统需要许多过期的 CA 证书。
    • 好电话。我已经编辑了答案以确保只返回 \My 证书。
    • 这对 Certificates\Personal\Certificates 非常有用,如果我想在不同的文件夹(如受信任的根证书颁发机构或任何其他文件夹)中执行相同操作,我将使用什么名称代替 MY ,是否有一个列表,其中包含我可以分到脚本中的每个名称?感谢您抽出宝贵时间回答我的问题并分享您的知识,非常感谢
    • @aztech 我添加了一点单行代码,可让您获取证书商店的名称。
    • 效果很好,谢谢。最后一个问题,如果我想针对文本文件中列出的一组服务器运行脚本,我该怎么做,因为它已经有一个 foreach 语句,我不确定在哪里放置另一个 foreach 语句
    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 2023-03-24
    • 2023-02-02
    • 1970-01-01
    • 2016-09-20
    • 2013-03-16
    • 1970-01-01
    • 2013-12-10
    相关资源
    最近更新 更多