Ron Anoshi Ответов: 3

Как удалить сертификат с помощью powershell


Привет,

В интернете есть какой-то код, который должен делать то, что я пытаюсь сделать, но он не сработал для меня, попробовав его в командной строке PowerShell строка за строкой.

Я пытаюсь удалить сертификат из CurrentUser\My store по его отпечатку большого пальца:

Цитата:
get-childitem cert:CurrentUser\My


(это работает и перечисляет мои сертификаты с соответствующими отпечатками больших пальцев)

а что потом? как работает команда remove-item? Я уже пробовал:

Цитата:
$store = New-Object System.Безопасность.Криптография.X509Certificates.X509Store("Мой","Текущий Пользователь)
$отпечаток большого пальца = "91110a3dd00d5a03a7c7585303fe787653cd4c14"
$cert = $store.Сертификаты.Find("FindByThumbprint", $thumbprint, $TRUE)
Удалить-пункт -путь сертификата:\текущий пользователь\мои\$сертификата


Я получаю:

Цитата:
Подтверждать
Элемент в cert:\CurrentUser\My\ имеет дочерние элементы, и параметр Recurse не был указан. Если вы продолжите, то все
дети будут удалены вместе с этим предметом. Вы уверены, что хотите продолжить?
[Г] Да [] да [н] нет [м] нет [s] приостановить [?] Справка (по умолчанию используется "Y"):


а это значит, что я делаю что-то не так...

каков правильный синтаксис remove-item для удаления конкретного сертификата из моего магазина?

Большое спасибо за любые предложения,
Рон.

3 Ответов

Рейтинг:
23

Member 10358378

$Certs = get-childitem cert:"CurrentUser\My"

$Certs | %{Remove-Item -path $_.PSPath -recurse -Force}


Ron Anoshi

Извините за задержку приема, но под этим мостом было много воды...
Я принял ваше решение, так как оно кажется правильным, но у меня нет возможности проверить его прямо сейчас.

Рейтинг:
1

Member 14767946

Я запускаю Powershell на Win2k16: 5.1.14393.3471
Я мог только заставить работать следующий синтаксис, мне пришлось удалить "-Force" из команды, чтобы цикл повторял каждый элемент в списке. Я проверяю наличие сертификатов, у которых осталось менее 40 дней до истечения срока их действия:

Get-ChildItem -Path Cert:\LocalMachine\Root | Where-Object {$_.NotAfter -lt (Get-Date).AddDays(40)} | ForEach-Object {Remove-Item -Path "Cert:\LocalMachine\Root\$($_.Thumbprint)" -Recurse -Verbose}


Кроме того, вы должны выполнить проверку количества сертификатов в "корневом" хранилище до и после импорта файла sst, используя следующую команду:

(Get-ChildItem -Path Cert:\LocalMachine\Root).Count


Я надеюсь, что это сэкономит кому-то кучу времени, потому что я потратил довольно много времени на след и ошибку.

Удачи вам!


Рейтинг:
0

Member 14860372

get-childitem cert:\CurrentUser\My | Remove-Item