Skip to main content

PowerShell function that searches certificate store for certificates that match the specified Enhanced Key Usage (EKU).

function Search-CertificateStore
{
    ##############################################################################
    ##
    ## Search-CertificateStore
    ##
    ## From Windows PowerShell Cookbook (O'Reilly)
    ## by Lee Holmes (http://www.leeholmes.com/guide)
    ##
    ##############################################################################

    <#

    .SYNOPSIS

    Search the certificate provider for certificates that match the specified
    Enhanced Key Usage (EKU.)

    .EXAMPLE

    PS > Search-CertificateStore "Encrypting File System"
    Searches the certificate store for Encrypting File System certificates

    #>

    param(
        ## The friendly name of an Enhanced Key Usage
        ## (such as 'Code Signing')
        [Parameter(Mandatory = $true)]
        $EkuName
    )

    Set-StrictMode -Off

    ## Go through every certificate in the current user's "My" store
    foreach($cert in Get-ChildItem cert:\CurrentUser\My)
    {
        ## For each of those, go through its extensions
        foreach($extension in $cert.Extensions)
        {
            ## For each extension, go through its Enhanced Key Usages
            foreach($certEku in $extension.EnhancedKeyUsages)
            {
                ## If the friendly name matches, output that certificate
                if($certEku.FriendlyName -eq $ekuName)
                {
                    $cert
                }
            }
        }
    }
}