You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows 10中编写脚本批量删除所有过期证书?

在Windows 10中批量移除已过期证书的脚本实现

在Windows 10环境下,用PowerShell编写脚本是批量处理过期证书的高效方式,以下是具体实现方法:

完整PowerShell脚本

# 获取当前系统日期
$currentDate = Get-Date

# 定义需要检查的证书存储路径(可根据需求增减)
$certStores = @(
    "Cert:\CurrentUser\My",
    "Cert:\CurrentUser\Root",
    "Cert:\CurrentUser\CA",
    "Cert:\LocalMachine\My",
    "Cert:\LocalMachine\Root",
    "Cert:\LocalMachine\CA"
)

foreach ($store in $certStores) {
    # 筛选出当前存储中已过期的证书
    $expiredCertificates = Get-ChildItem -Path $store | Where-Object { $_.NotAfter -lt $currentDate }

    if ($expiredCertificates) {
        Write-Host "`n正在处理存储:$store"
        foreach ($cert in $expiredCertificates) {
            Write-Host "即将删除过期证书:主题=$($cert.Subject),过期日期=$($cert.NotAfter)"
            # 执行删除操作,-Force参数强制删除
            Remove-Item -Path $cert.PSPath -Force
        }
    } else {
        Write-Host "`n存储$store中无过期证书"
    }
}

Write-Host "`n过期证书清理完成"

脚本说明

  • 日期判断:通过Get-Date获取当前日期,对比证书的NotAfter(过期日期)字段筛选过期证书。
  • 存储路径:$certStores数组包含了常见的用户及计算机证书存储位置,你可以根据实际需要添加或移除路径,比如不需要检查根证书就删掉Root相关的条目。
  • 安全验证:脚本会先输出待删除证书的主题和过期日期,方便你确认操作对象,避免误删。

注意事项

  1. 权限要求:必须以管理员身份运行PowerShell,否则无法修改LocalMachine下的证书存储。
  2. 预检查建议:首次运行时,可以注释掉Remove-Item那一行,只执行证书筛选和输出,确认列表中的证书确实是过期且可删除的,再取消注释执行删除。
  3. 系统证书谨慎删除:部分系统内置的根证书即使过期,删除后可能导致部分网站或服务无法正常信任,操作Root存储时请格外小心。

内容的提问来源于stack exchange,提问作者DreizZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:20:34