我正在使用以下 powershell 获取证书列表,包括任何已归档的证书,以便我可以轻松地将它们传输到新 PC
$store=new-object
System.Security.Cryptography.X509Certificates.X509Store("My","CurrentUser")
$store.open("ReadOnly,IncludeArchived")
$privateCerts = $store.Certificates | Where-Object { $_.hasPrivateKey }
但是,当我尝试使用例如将它们导出到 pfx 文件时
$privateCerts| Foreach-Object { [system.IO.file]::WriteAllBytes("$($_.thumbprint)$($_.Subject).pfx", ($_.Export('PFX', 'password')) ) }
它会为任何不可导出的异常抛出异常。现在我知道我无法导出这些,但我想跳过它们而不让脚本抛出错误。我可以通过捕获异常来解决它,但是有没有办法确定证书是否可导出。
我找到了对 x509keystorageflags 的引用,它有一个我可以检查的“可导出”位,但我无法弄清楚如何使用 powershell 获取证书的信息。