Test-Credential.ps1
<#PSScriptInfo
.DESCRIPTION Simulates an Authentication Request in a Domain envrionment using a PSCredential Object. Returns $true if both Username and Password pair are valid. .VERSION 1.2 .GUID 6a18515f-73d3-4fb4-884f-412395aa5054 .AUTHOR Thomas Malkewitz @dotps1 .TAGS PSCredential .RELEASENOTES Corrected Parameter Type for -Credential to properly support pipeline input. #> [OutputType([Bool])] Param ( [Parameter( Mandatory = $true, ValueFromPipeLine = $true, ValueFromPipelineByPropertyName = $true )] [Alias( 'PSCredential' )] [ValidateNotNull()] [System.Management.Automation.PSCredential] [System.Management.Automation.Credential()] $Credential = [System.Management.Automation.PSCredential]::Empty, [Parameter()] [String] $Domain = $env:USERDOMAIN ) Begin { [void][System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices.AccountManagement") $principalContext = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Domain, $Domain) } Process { $networkCredetial = $Credential.GetNetworkCredential() return $principalContext.ValidateCredentials($networkCredetial.UserName, $networkCredetial.Password) } End { $principalContext.Dispose() } |