Recentemente, reconstruí minha PKI e gostaria de excluir os certificados que foram emitidos para todas as máquinas clientes na minha rede. Parece um trabalho para o Powershell! Então, eu escrevi esse script para ser distribuído pelo GPO, executado a partir do SysVol e acionado nas máquinas clientes na inicialização:
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 }
}
Em um prompt de comando elevado:
- Quando Ran, o script não fornece saída (simplesmente uma nova linha de terminal). Ele não retorna erros e o certificado não é excluído.
- Quando o argumento
-WhatIf
é adicionado aoRemove-Item
comando no script, novamente não há erros e o Certificado não é excluído. - Quando Remove-Item. \ CERTIFICATE-THUMBPRINT -Force é executado, o certificado é excluído.
Isso é um problema de permissão? Existe uma maneira mais inteligente / simples de fazer isso?
Obrigado!
remove-item -whatif
??write-host
para despejar algo na tela se o condicional for verdadeiro. Gostaria de saber se o script está avaliando como falso (explicaria o nenhum erro e nenhuma ação).Remove-Item -Force
?Respostas:
Minha resposta é para "Existe uma maneira mais inteligente / simples de fazer isso?" parte da sua pergunta. Este script foi bem-sucedido na remoção de um certificado go daddy para mim
Eu adicionei um
-WhatIf
para que esse código não fosse perigoso para o folx "copy \ paste \ run". Agora, você vai precisar para se adaptar a$Path
,Where-Object
e adicione a$certname
variável, mas o modelo acima deve ter-lo ir.fonte
Embora não tenha conseguido resolver o problema com o script, consegui encontrar uma maneira 'mais inteligente / mais simples' de atingir meu objetivo .
Da autoridade de certificação:
Certificate Templates
e selecioneManage
Reenroll All Certificate Holders
Isso aumentará o número da versão do modelo e os sistemas de rede com inscrição automática excluirão o certificado antigo e se inscreverão no novo certificado.
Embora isso exija a inscrição automática para o modelo específico em que estou trabalhando, uma solução para o script publicado seria uma resposta preferível.
fonte