Foreach ($MachineCert In Get-ChildItem Cert:\LocalMachine -Recurse | Where HasPrivateKey)
{
$MachineCert |
Select @{n='Subject'; e={ $MachineCert.Subject }},
@{n='Container'; e={ $MachineCert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName }},
@{n='Store'; e={ $MachineCert.PSParentPath }}
}
Subject Container Store
------- --------- -----
CN=Ryan-Win81-2014 f686aa...9dfa-7c3d5dc833ac Remote Desktop
CN=localhost fad662...9dfa-7c3d5dc833ac My
Note que você provavelmente precisará de elevação do administrador / UAC antes de poder ler certas propriedades de certos certificados.
Eu não posso dizer com certeza que a "indefinição" é intencional, mas não me surpreenderia. A maioria das pessoas não entende o que são certificados X509 ou quais são as chaves privadas, nem a maioria das pessoas se importa, infelizmente. Ao fazer isso por você, o Windows pode pelo menos ocultar as chaves privadas em um local relativamente seguro no sistema de arquivos, já que se a maioria dos usuários tivesse que lidar com chaves particulares, eles simplesmente deixariam as chaves privadas em seus desktops. .