代码之家  ›  专栏  ›  技术社区  ›  g.pickardou

如何使用PowerShell根据以前创建的证书的DNS名称查找和删除证书?

  •  0
  • g.pickardou  · 技术社区  · 6 年前

    我可以使用PowerShell创建自签名证书:

    $cert = New-SelfSignedCertificate –DnsName www.test.com -CertStoreLocation “cert:\LocalMachine\My”
    

    因为这是一个自动化测试场景,所以我必须允许多次运行。下次我(这是一个完全独立的会话)希望找到所有DNS名称为www.test.com的证书,并完全擦除它们。它可能不止一个,当然还有不同的指纹等等。

    不幸的是,我找不到任何PowerShell命令删除证书。我想我应该基于DNS进行查询,然后在循环中删除…

    问题

    这项任务完全可以在PowerShell中解决吗?(删除具有给定DNS名称的所有证书)

    2 回复  |  直到 6 年前
        1
  •  1
  •   bluuf    6 年前

    简单的一行程序:

    Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.DnsNameList -contains 'www.domain.org'} | Remove-Item
    

    remove item是用于删除证书的命令。

        2
  •  3
  •   TheMadTechnician    6 年前

    如果您有PowerShell v3或更高版本,这将变得非常简单,正如PS3介绍的 -DnsName 证书提供程序选项的参数 Get-ChildItem . 这将查找并删除www.test.com的dnsname中的任何内容:

    Get-ChildItem Cert:\ -Recurse -DnsName 'www.test.com' | Remove-Item
    

    它甚至支持通配符,因此如果您有几个需要用类似名称(如“mailproxy.test.com”、“www.test.com”和“ftp.test.com”)清理的证书,则可以运行此证书:

    Get-ChildItem Cert:\ -Recurse -DnsName '*.test.com' | Remove-Item