使用 powershell 导出证书

export certificate using powershell

任何专家都知道需要完成哪些代码才能从证书详细信息选项卡中的密钥用法导出证书的值?

代码

dir cert:\currentuser\my |
Where-Object  ($_.Extensions `
  | Where-Object { $_.Oid.Value -eq "2.5.29.15" -And ( $_.KeyUsages -eq 'KeyEncipherment|DataEncipherment(30)') } |
Foreach-Object { [system.IO.file]::WriteAllBytes("c:\export$($_.SerialNumber).cer",   ($_.Export('CERT', $null)) ) }

试试这个以列出密钥使用扩展中仅包含 KeyEncipherment 的所有证书:

#Listing 1
dir cert:\currentuser\my | 
Where-Object {
  ($_.Extensions | 
  Where-Object{ 
    $_.Oid.Value -eq "2.5.29.15" -and $_.KeyUsages -eq "KeyEncipherment"}) } | 
Select-Object{ 
  $_.SerialNumber, 
  $_.Issuer, 
  ($_.Extensions | 
    Where-Object{ $_.Oid.Value -eq "2.5.29.15" }).KeyUsages }

这里是导出:

#Listing 2
dir cert:\currentuser\my | 
Where-Object { 
  ($_.Extensions | 
    Where-Object{ 
      $_.Oid.Value -eq "2.5.29.15" -and $_.KeyUsages -eq "KeyEncipherment"}) } | 
Foreach-Object{ 
[System.IO.File]::WriteAllBytes(
  ".$($_.SerialNumber).cer", 
  $_.Export("Cert", $null)); }

试试这个以列出密钥使用扩展中包含 ONLY DataEncipherment AND KeyEncipherment 的所有证书:

#Listing 3
dir cert:\currentuser\my | 
Where-Object {
  ($_.Extensions | 
  Where-Object{ 
    $_.Oid.Value -eq "2.5.29.15" -and $_.KeyUsages -eq "DataEncipherment, KeyEncipherment"}) } | 
Select-Object{ 
  $_.SerialNumber, 
  $_.Issuer, 
  ($_.Extensions | 
    Where-Object{ $_.Oid.Value -eq "2.5.29.15" }).KeyUsages }

这里是导出:

#Listing 4

dir cert:\currentuser\my | 
Where-Object { 
  ($_.Extensions | 
    Where-Object{ 
      $_.Oid.Value -eq "2.5.29.15" -and $_.KeyUsages -eq "DataEncipherment, KeyEncipherment"}) } | 
Foreach-Object{ 
[System.IO.File]::WriteAllBytes(
  ".$($_.SerialNumber).cer", 
  $_.Export("Cert", $null)); }

检查所有证书的密钥用法值运行:

#Listing 5
dir cert:\currentuser\my | 
Select-Object{  
  $_.SerialNumber, 
  $_.Issuer, 
 ($_.Extensions | Where-Object{ $_.Oid.Value -eq "2.5.29.15" }).KeyUsages }

这是输出: