Public/Test-ADCredential.ps1

function Test-ADCredential {
    Param(
        [Parameter(
        Position=0,
        Mandatory=$true,
        ValueFromPipeline = $true)]
        [pscredential]$Credential
    )
    
    Add-Type -AssemblyName System.DirectoryServices.AccountManagement
    $AuthLookup = @{
        $true = 'machine'
        $false = 'domain'
    }

    $DS = [System.DirectoryServices.AccountManagement.PrincipalContext]::new($AuthLookup[($env:USERDOMAIN -eq $env:COMPUTERNAME)])
    $Credential.GetNetworkCredential() | % {
        $DS.ValidateCredentials($_.UserName, $_.Password)
    }
}