Isso é possível com um one-liner do PowerShell, você só precisa de uma maneira fácil de identificar esse certificado (estou usando o ThumbPrint do certificado).
Se você já tem uma máquina conhecida que você sabe que definitivamente tem o certificado instalado (a maneira mais fácil de verificar interativamente é usando apenas certmgr.msc
), então você pode usar essa máquina para localizar a impressão digital do certificado.
O seguinte comando do PowerShell listará todos os certs instalados no armazenamento do Trusted Publisher no contexto da máquina local:
Get-ChildItem -Path Cert:\LocalMachine\TrustedPublisher
Obviamente, o caminho acima pode ser modificado, para listar outras lojas cert, ou você pode ver (uma longa lista de) todos os certificados instalados localmente usando:
Get-ChildItem -Path Cert: -Recurse
O primeiro comando deve fornecer uma saída como esta:
PS C:\> Get-ChildItem -Path Cert:\LocalMachine\TrustedPublisher
Directory:
Microsoft.PowerShell.Security\Certificate::LocalMachine\TrustedPublisher
Thumbprint Subject
---------- -------
83EDC96EC3D55125EFFC77BC815F9133E268D5EB CN="User, Test", OU=Testing Resources...
4DFF713712084D43DE6879C689F9A143C4A793BF CN=Server One Self-signed
Depois de encontrar a impressão digital do certificado que você está procurando, use-a para filtrar os resultados da seguinte forma:
Get-ChildItem -Path Cert:\LocalMachine\TrustedPublisher | Where-Object {$_.Thumbprint -eq "83EDC96EC3D55125EFFC77BC815F9133E268D5EB"}
Isso deve retornar os detalhes do certificado, se estiver instalado, e nada, se não estiver. Entre outros usos, este one-liner Powershell pode ser usado como um método personalizado de detecção de script em um aplicativo SCCM 2012.
(Recursos usados: Use o PowerShell para encontrar certificados que estão prestes a expirar | Dica: use o PowerShell para descobrir impressões digitais de certificados | Usando o cmdlet Where-Object )