function Get-CertificateExportInfo { <# .SYNOPSIS Fetches a Certificate's Export Information. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [System.Security.Cryptography.X509Certificates.X509Certificate2]$Cert, [Parameter(Mandatory = $true)] [string]$ExportCertPath) $exportInfo = [PSCustomObject]@{ CertExportType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx ExportCertFile = Join-Path $exportCertPath "$certName.pfx" ExportCertPath = $exportCertPath CertPassword = "" ADGroups = "" CertName = "" ExpirationDate = $cert.NotAfter Thumbprint = $cert.Thumbprint } if ($cert.HasPrivateKey) { if (!$cert.PrivateKey.CspKeyContainerInfo.Exportable) { Write-Warning "Certificate $certName with thumbprint $($cert.Thumbprint) has a private key but is marked as unexportable. This certificate will not be exported" $exportInfo.certExportType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Unknown } } else { $exportInfo.certExportType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert $exportInfo.exportCertFile = Join-Path $exportCertPath "$certName.cer" } return $exportInfo }