Я недавно восстановил свой 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 }
}
От поднятой командной строки:
-WhatIf
добавляется к Remove-Item
команда в сценарии, снова никакие ошибки и Сертификат не удалена.Действительно ли это - проблема полномочий? Существует ли более умный/более простой способ сделать это?
Спасибо!
Мой ответ - "Есть ли более умный/простой способ сделать это?" часть вашего вопроса. Этот скрипт успешно удалил для меня папочку-серт
$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
так, чтобы этот код не был опасен для фолианта "copy\paste\run". Теперь нужно адаптировать $Path
, Where-Object
и добавить переменную $certname
, но вышеприведенный шаблон должен вас заставить.
Хотя я не смог решить проблему со скриптом, я смог найти "Умный/Прозрачный" способ достичь своей цели.
В Центре сертификации:
Шаблоны сертификатов
и выберите Управление
Перерегистрировать всех держателей сертификатов
Это увеличит номер версии шаблона, а сетевые системы с автоматической регистрацией удалят старый сертификат и зарегистрируются с новым сертификатом.
Хотя это требует автоматической регистрации для конкретного шаблона, с которым я работаю, предпочтительным ответом будет решение для размещенного скрипта.