Удаление сертификата из хранилища сертификатов локальной машины в powershell? - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь проверить, а затем удалить сертификат, если он существует в хранилище локального компьютера пользователя.Я пробовал это:

$certCN = 'test.domain.com'
Set-Location Cert:\LocalMachine\My
$oldCert = Get-ChildItem -Recurse | 
Where-Object { $_.subject -like "CN=$oldCert*" }
Remove-Item Cert:\LocalMachine\My\$oldCert -Force

Но это не удаление сертификата из магазина и не выдача каких-либо ошибок (да, я запускаю этот повышенный уровень).

Я проверил $oldCertпеременная, чтобы увидеть, если она заполнена, и это:

PS Cert:\LocalMachine\My> $oldcert
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My

Thumbprint                                Subject                                                                                                                                                                       
----------                                -------                                                                                                                                                                       
276B7B87740D5E9595A258060F5CD9CC4190E9E1  CN=test.domain.com, <truncated>

Кто-нибудь знает, как это сделать?Я действительно ценю это.

1 Ответ

0 голосов
/ 20 декабря 2018

Проблема, с которой вы сталкиваетесь, заключается в автоматическом преобразовании строки объекта X509Certificate2 с диска Cert:\.Когда вы добавляете его к своему пути как -Path some\path\$myobj, он неявно вызывает ToString для объекта.Вы можете наблюдать это, выполняя "some\path\$myobj" на консоли без какого-либо другого кода или просто вызывая $myobj.ToString().

Поскольку Remove-Item принимает конвейерный ввод по имени свойства, он автоматически вытягивает путь из вашего объектакогда вы передадите его по конвейеру, вы сможете исправить проблему просто так:

$oldCert | Remove-Item

или

Remove-Item -LiteralPath $oldCert.PSPath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...