Powershell远程删除PKI证书

我最近重build了我的PKI,我想删除发给我networking中所有客户端机器的证书。 听起来像是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 } } 

从提升的命令提示符:

  • 当冉,脚本没有输出(只是一个新的terminal线)。 它不返回错误,证书不会被删除。
  • 将参数-WhatIf添加到脚本中的Remove-Item命令时,不会再删除错误和证书。
  • 当运行Remove-Item。\ CERTIFICATE-THUMBPRINT -Force时,证书将被删除。

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

谢谢!

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

 $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 } 

我添加了一个-WhatIf以便这个代码对于“复制\粘贴\运行”folx没有危险。 现在,您需要修改$PathWhere-Object ,并添加$certnamevariables,但是上面的模板应该可以继续。

尽pipe我还没有能够解决这个问题,但我find了一个“更智能/更简单”的方法来实现我的目标 。

从证书颁发机构:

  • Rt – 单击Certificate Templates并selectManage
  • Rt – 单击您要replace的证书模板,然后selectReenroll All Certificate Holders

这将增加模板的版本号,使用自动注册的networking系统将删除旧的证书并注册新的证书。

虽然这需要自动注册我正在使用的特定模板,但是发布脚本的解决scheme将是一个更好的答案。