Как найти и удалить ранее созданные сертификаты на основе их имени DNS с помощью powershell? - PullRequest
0 голосов
/ 25 января 2019

Я могу создать самозаверяющий сертификат с помощью PowerShell:

$cert = New-SelfSignedCertificate –DnsName www.test.com -CertStoreLocation “cert:\LocalMachine\My”

Поскольку это сценарий автоматического тестирования, я должен разрешить несколько прогонов. В следующий раз я (это совершенно отдельный сеанс) хотел бы найти все сертификаты с DNS-именем www.test.com и полностью стереть их. Это может быть более одного, конечно, с разным отпечатком большого пальца и т. Д.

К сожалению, я не могу найти ни одной команды PowerShell, удаляющей сертификаты. Я полагаю, что я должен запросить на основе DNS, а затем в цикле удалить ...

Вопрос

Может ли эта задача вообще решаться полностью в Powershell? (удалить все сертификаты с указанным именем DNS)

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Если у вас PowerShell v3 или выше, это становится очень просто, поскольку PS3 ввел параметр -DnsName в параметрах поставщика сертификатов Get-ChildItem.Он найдет и удалит что-нибудь с DNSName www.test.com:

Get-ChildItem Cert:\ -Recurse -DnsName 'www.test.com' | Remove-Item

. Он даже поддерживает подстановочные знаки, поэтому, если у вас есть несколько сертификатов, которые вам нужно очистить с похожими именами, такими как 'mailproxy.test.com ',' www.test.com 'и' ftp.test.com 'вы можете запустить так:

Get-ChildItem Cert:\ -Recurse -DnsName '*.test.com' | Remove-Item
0 голосов
/ 25 января 2019

Простой oneliner для этого:

Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.DnsNameList -contains 'www.domain.org'} | Remove-Item

Remove-Item - команда, используемая для удаления сертификата.

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