Попробуйте это, чтобы перечислить все сертификаты, которые содержат ТОЛЬКО 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)); }
Попробуйте здесь перечислены все сертификаты, которые содержат ТОЛЬКО DataEncipherment
И 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 }
Вот результат: