Public/Functions/Export-OSDCertificatesAsReg.ps1
|
function Export-OSDCertificatesAsReg { <# .SYNOPSIS Exports selected LocalMachine certificates as .reg files. .DESCRIPTION Prompts for installed certificates and exports matching certificate registry keys from system certificate hives into .reg files under the temporary Certs folder. .EXAMPLE Export-OSDCertificatesAsReg Opens a selection grid and exports registry-backed certificate entries for selected certificates to $env:Temp\Certs. .LINK https://github.com/OSDeploy/OSD/tree/master/docs .NOTES Author: David Segura - Recast Software 2026-07-11 - Added comment-based help #> [CmdletBinding()] param () Write-Verbose "Export-OSDCertificatesAsReg: Export installed Certificates as REG files to $env:Temp\Certs" $Certs = Get-ChildItem -Path Cert:\LocalMachine -Recurse | Where-Object {$_.PSIsContainer -eq $false} | Select-Object -Property FriendlyName, Thumbprint, Issuer, Subject, Handle, PSPath | Sort-Object FriendlyName | Out-GridView -PassThru -Title 'Select Certificates to Convert to Reg' foreach ($Cert in $Certs) { $Reg = @() $Reg = Get-ChildItem -Path ('HKLM:\SOFTWARE\Microsoft\SystemCertificates','HKLM:\SOFTWARE\Policies\Microsoft\SystemCertificates','HKLM:\SOFTWARE\Microsoft\EnterpriseCertificates') -Recurse | Select-Object -Property * | Where-Object {$_.Name -like "*$($Cert.Thumbprint)*"} if (!(Test-Path "$env:Temp\Certs")) {New-Item "$env:Temp\Certs" -ItemType Directory -Force | Out-Null} Write-Verbose "$($Cert.FriendlyName)" -Verbose foreach ($R in $Reg) { Write-Host "$($R.Name)" $ver = Get-Random Write-Host "Exporting to $env:Temp\Certs\$($Cert.Thumbprint)-$($Cert.Handle)-$ver.reg" -ForegroundColor DarkGray reg export "$($R.Name)" "$env:Temp\Certs\$($Cert.Thumbprint)-$($Cert.Handle)-$ver.reg" } } } |