やりたいこと
PC 交換時に交換前の PC に入っている証明書を把握しておきたい。
やり方
「個人」の証明書を表示させたい場合は下記のコマンドを実行します。
サンプル.ps1
Get-ChildItem -Path Cert:\CurrentUser\My
全ての証明書を網羅し、テキスト(csv)出力する場合は下記の PowerShell を実行します。
証明書出力.ps1
# 検索する証明書ストアのリスト
$stores = @()
$stores += "My"
$stores += "Root"
$stores += "CA"
$stores += "TrustedPeople"
$stores += "TrustedPublisher"
$stores += "AuthRoot"
$stores += "Disallowed"
$stores += "ClientAuthIssuer"
$stores += "UserDS"
$stores += "ACRS"
$stores += "REQUEST"
$stores += "addressbook"
$stores += "Local NonRemovable Certificates"
$stores += "SmartCardRoot"
$stores += "Trust"
# 全ての証明書を格納するリスト
$allCerts = @()
# 各ストアから証明書を取得
foreach ($store in $stores) {
$localMachineCerts = Get-ChildItem -Path "Cert:\LocalMachine\$store" | Select-Object -Property *, @{Name="Store";Expression={"LocalMachine\$store"}}
$currentUserCerts = Get-ChildItem -Path "Cert:\CurrentUser\$store" | Select-Object -Property *, @{Name="Store";Expression={"CurrentUser\$store"}}
$allCerts += $localMachineCerts
$allCerts += $currentUserCerts
}
# 指定された情報に一致する証明書を検索
$matchingCerts = $allCerts
# 結果を表示
if ($matchingCerts) {
$matchingCerts | Select-Object -Property Store, PSPath, Subject, Issuer, Thumbprint, NotBefore, NotAfter | `
Export-Csv -Path "$ENV:USERPROFILE\Desktop\$($ENV:USERNAME)_$($ENV:COMPUTERNAME)_証明書_$(Get-Date -Format yyyyMMdd).csv" -NoTypeInformation -Encoding Default
} else {
Write-Output "指定された情報に一致する証明書は見つかりませんでした。"
}
注意
検索機能を拡張するための処理が入っています。
実装しておりませんので無意味な処理です。
※「\$matchingCerts = $allCerts」の部分。
実行結果
デスクトップ上に「ユーザー名_ホスト名_証明書_yyyyMMdd.csv」が出力されます。
検索用
証明書
証明書ストア
個人
ほかの人
中間証明機関
信頼されたルート証明機関
頼された発行元
頼されない発行元
発行先
発行者
有効期限
フレンドリ名
サーバー認証
クライアント認証
コード署名
電子メールの保護