Private/Get-CertificateDetailsByThumbprint.ps1
<#
.SYNOPSIS This function attempts to parse a string into a DateTime object using a set of known formats. .DESCRIPTION #************************************************************************************************************ # Disclaimer # # This sample script is not supported under any Microsoft standard support program or service. This sample # script is provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties # including, without limitation, any implied warranties of merchantability or of fitness for a particular # purpose. The entire risk arising out of the use or performance of this sample script and documentation # remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, # production, or delivery of this script be liable for any damages whatsoever (including, without limitation, # damages for loss of business profits, business interruption, loss of business information, or other # pecuniary loss) arising out of the use of or inability to use this sample script or documentation, even # if Microsoft has been advised of the possibility of such damages. # #************************************************************************************************************ #> #region Get-CertificateDetailsByThumbprint function Get-CertificateDetailsByThumbprint { param ( [Parameter(Mandatory = $true)] [string[]]$Thumbprints ) [array]$certList = Get-ChildItem Cert:\LocalMachine -Recurse $outList = [System.Collections.Generic.List[pscustomobject]]::new() foreach ($item in $thumbprints) { [array]$tmpCert = $certList | Where-Object { $_.Thumbprint -eq $item } if ($tmpCert) { [array]$tmpStoreName = $tmpCert.pspath -replace '.*?Certificate::[^\\]+\\([^\\]+)\\.*', '$1' -replace 'CA', 'Intermediate CA' -replace 'Root', 'Root CA' $outList.Add([pscustomobject]@{ Info = "Found in $($tmpStoreName.count) store(s)" Store = ($tmpStoreName -join ', ') Issuer = $tmpCert[0].Issuer -replace '^CN=' IssuedTo = ($tmpCert[0].Subject -replace '^.*CN=([^,]+),.*$', '$1' -replace '^CN=') Thumbprint = $item ValidFrom = $tmpCert[0].NotBefore ValidTo = $tmpCert[0].NotAfter ExpireDays = try{[math]::Round(($tmpCert[0].NotAfter - (Get-Date)).TotalDays, 2)} catch { 'N/A' } }) } else { $outList.Add([pscustomobject]@{ Info = 'Not found' Store = '' Issuer = '' IssuedTo = '' Thumbprint = $item ValidFrom = '' ValidTo = '' ExpireDays = '' }) } } return $outList } #endregion |