Powershell 远程删除 PKI 证书

Byr*_* C. 9 powershell pki certificate-authority windows-server-2012-r2

我最近重建了我的 PKI,我想删除颁发给我网络中所有客户端计算机的证书。听起来像是 Powershell 的工作!所以我写了这个脚本由 GPO 分发,从 SysVol 运行,并在启动时在客户端机器上触发:

set-location cert:\LocalMachine\My
$certname = $env:COMPUTERNAME + ".domain.com"
get-item * | %{
if($_.issuer -like "CN=IssuingCA*" -and $_.DnsNameList.unicode -like $certname) { remove-item .\$_.Thumbprint -Force }
}
Run Code Online (Sandbox Code Playgroud)

从提升的命令提示符:

  • 当 Ran 时,脚本不提供任何输出(只是一个新的终端行)。它不会返回任何错误并且不会删除证书。
  • 当参数-WhatIf添加到Remove-Item脚本中的命令时,同样没有错误并且证书不会被删除。
  • 当 Remove-Item .\CERTIFICATE-THUMBPRINT -Force 运行时,证书被删除。

这是权限问题吗?有没有更聪明/更简单的方法来做到这一点?

谢谢!

Col*_*337 6

我的答案是“有没有更聪明/更简单的方法来做到这一点?” 你问题的一部分。这个脚本成功地为我删除了一个 go daddy 证书

$Path = 'Cert:\LocalMachine\AuthRoot\'
$CertList = @()

$CertList = Get-ChildItem -Path $Path | Where-Object {$_.Issuer -like "CN=GO*"}

foreach($Cert in $CertList){
    remove-item "$($Path)$($Cert.Thumbprint)" -Force -WhatIf
}
Run Code Online (Sandbox Code Playgroud)

我添加了一个,-WhatIf以便此代码对“复制\粘贴\运行”folx 没有危险。现在,你需要适应$PathWhere-Object并添加$certname变量,但上面的模板应该有你去。