HOWTO · PowerShell
如何使用 PowerShell 从 Windows 证书存储中删除证书
了解如何在 Windows 证书存储中查找证书、使用 PowerShell 将其删除、选择是否删除其私钥,并在之后检查存储。
本页内容
若要使用 PowerShell 删除 Windows 证书存储中的证书,请先找到正确的存储区和证书,再用 Remove-Item 删除对应的证书提供程序路径。是否添加 -DeleteKey 应单独决定:不添加此开关时,命令会删除证书条目,但不会请求删除其私钥。
在 Windows 证书存储中查找证书
PowerShell 通过 Cert: 提供程序驱动器访问 Windows 证书存储。两个常见的存储位置是 Cert:\CurrentUser(当前登录的用户账户)和 Cert:\LocalMachine(计算机)。My 这类存储区包含个人证书。请选择包含待删除证书的位置和存储区。
使用 Get-ChildItem -Path Cert:\ 列出可用的存储区,然后用 Get-ChildItem -Path Cert:\LocalMachine\My | Select-Object Subject, Thumbprint 检查所选存储区。第二条命令针对本机的 My 存储区。
检查证书的主题和指纹,找到要操作的条目。主题可以帮助区分证书,但应使用指纹来构造项目路径。根据选中的条目设置存储路径和指纹变量,并将占位符替换为系统中显示的指纹:
$storePath = 'Cert:\LocalMachine\My'; $thumbprint = '<thumbprint-from-your-store>'; $certificatePath = Join-Path -Path $storePath -ChildPath $thumbprint
如果证书位于其他存储区,请更改 Cert:\LocalMachine\My。这些 Windows 证书提供程序命令只是语法示例,尚未在非 Windows PowerShell 运行环境中执行。
使用 PowerShell 删除证书
确认存储路径和指纹后,使用 Remove-Item -Path "Cert:\LocalMachine\My\<thumbprint-from-your-store>" 删除对应的证书提供程序项目,并将占位符替换为找到的指纹。运行命令前请核对这两个值:存储路径决定 PowerShell 查找的位置,指纹则用于选择项目。这个适用于 Windows 的语法示例尚未执行,也不表示证书已成功删除。
选择是否删除私钥
默认情况下,从存储区删除证书不会请求删除与之关联的私钥。只有在你确实想同时删除证书和私钥,且提供程序支持此操作时,才在 Remove-Item 命令中添加 -DeleteKey。例如,根据上文选定的存储区和指纹定义 $certificatePath 后,可以使用 Remove-Item -Path $certificatePath -DeleteKey。
此选择既关系到可见的证书条目,也关系到私钥材料。不使用 -DeleteKey 删除证书时,私钥不在此次删除请求的范围内;这并不能证明私钥仍然存在、可以访问或能够使用。删除证书前,请根据你的密钥管理需求作出选择。
验证证书和私钥状态
删除后,查询同一存储路径,并使用 Get-ChildItem -Path $storePath | Where-Object Thumbprint -EQ $thumbprint | Select-Object Subject, Thumbprint 查找所选指纹。上文已根据所选存储区和证书设置这些变量。如果查询结果中没有该指纹,说明该证书不再列于该存储区中。如果仍能查到,则尚未确认删除;请重新检查路径和指纹,再作判断。此 Windows 专用检查仅展示语法,本文未实际执行。
此检查只能确认所选证书是否出现在被查询的存储区中,无法证明私钥材料是否仍然存在或能否使用。应根据你的环境,针对相应的密钥提供程序和存储位置另行检查私钥。有关提供程序的详情,请参阅 Microsoft 的about_Certificate_Provider 文档。