PowerShell
PowerShell
Backup Windows Current User / Personal Certificates to a .zip
See more Certificates Examples
Demonstrates how to backup the certificates in the Windows registry-based Current User certificate store (in the "Personal" Logical Store as seen in certmgr.msc), to a zip archive. Certificates having an exportable private key are exported to .pfx files. Certificates with no private key, or with a non-exportable private key, are exported to .cer files.Obviously, this example only runs on Windows computers.
Chilkat PowerShell Downloads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"
$success = $false
$certStore = New-Object Chilkat.CertStore
$readOnly = $true
$success = $certStore.OpenCurrentUserStore($readOnly)
if (!$success) {
$($certStore.LastErrorText)
exit
}
$pfxPassword = "secret"
$allSuccess = $true
$numSuccess = 0
$zip = New-Object Chilkat.Zip
$zip.NewZip("qa_output/personalCerts.zip")
$certData = New-Object Chilkat.BinData
$sbFilename = New-Object Chilkat.StringBuilder
# Iterate over the certificates in the Current User store.
$cert = New-Object Chilkat.Cert
$numCerts = $certStore.NumCertificates
$i = 0
while ($i -lt $numCerts) {
$certStore.GetCert($i,$cert)
$("DN = " + $cert.SubjectDN)
$sbFilename.SetString("cert")
$sbFilename.AppendInt($i + 1)
$bHasPrivateKey = $cert.HasPrivateKey()
if (($bHasPrivateKey -eq $true) -and ($cert.PrivateKeyExportable -eq $true)) {
# Export to a .pfx
$success = $cert.ExportToPfxBd($pfxPassword,$true,$certData)
if ($success -eq $true) {
$sbFilename.Append(".pfx")
$zip.AddBd($sbFilename.GetAsString(),$certData)
}
}
else {
# Export to a .cer
$success = $cert.ExportCertDerBd($certData)
if ($success -eq $true) {
$sbFilename.Append(".cer")
$zip.AddBd($sbFilename.GetAsString(),$certData)
}
}
if ($success -ne $true) {
$allSuccess = $false
}
else {
$numSuccess = $numSuccess + 1
}
$i = $i + 1
}
if ($numSuccess -gt 0) {
$success = $zip.WriteZipAndClose()
if ($success -ne $true) {
$($zip.LastErrorText)
$allSuccess = $false
}
}
$("All success = " + $allSuccess)