Private/Get-ADCSCertficateTemplates.ps1

function Get-ADCSCertifcateTemplates {

    ################################################################################
    ##### #####
    ##### Get all AS2GO specific certificate Templates #####
    ##### #####
    ################################################################################

    Param
    (
        [Parameter(ValueFromPipeline, Mandatory)]
        [string]$Server,
        [Parameter(ValueFromPipeline, Mandatory)]
        [string] $CTPrefix
    )

    $CurrentFunction = Get-FunctionName
    Write-Log -Message "### Start Function $CurrentFunction ###"
    $StartRunTime = (Get-Date).ToString($Script:DateFormatLog)
    #################### main code | out- host #####################

    $ConfigNC = (Get-ADRootDSE).ConfigurationNamingContext
    $script:CTemplates = Get-ADObject -LDAPFilter "(&(objectClass=pKICertificateTemplate)(name=$CTPrefix*))" `
        -SearchBase "CN=Certificate Templates,CN=Public Key Services,CN=Services,$ConfigNC"  `
        -Properties Name, whenChanged, CanonicalName   `
        -Server $Server

    Invoke-Output -Type H1 -Message "`n`nIdentitfied $($script:CTemplates.count) 'AS2Go' Certificate Templates"

    If ($null -ne $script:CTemplates ) {
        $script:CTemplates | Select-Object Name, @{N = 'whenChanged'; E = { $_.whenChanged } }, @{N = 'CanonicalName'; E = { $_.CanonicalName } } | out-host
        $Script:ADCSASGoCTemplatesMissing = $false
    }
    else {
        #Invoke-Output -Type Info -Message "No AS2GO specific certificate Templates found."
    }
    
    $4logfile = $script:CTemplates | Select-Object Name, @{N = 'whenChanged'; E = { $_.whenChanged } }, @{N = 'CanonicalName'; E = { $_.CanonicalName } } | Format-Table | out-string 
    Write-Log -Message " >> Identified the following AS2GO specific certificate Template withing Forest '$ConfigNC': $4logfile"
  
    ######################## main code ############################
    $runtime = Get-RunTime -StartRunTime $StartRunTime
    Write-Log -Message " Run Time: $runtime [h] ###"
    Write-Log -Message "### End Function $CurrentFunction ###"
}