La Validation De PowerShell PSCredential

Disons que j'ai un PSCrendential objet dans PowerShell que j'ai créé à l'aide de Get-Credential.

Comment puis-je valider la saisie par rapport à Active Directory ?

Maintenant j'ai trouvé cette façon, mais je pense que c'est un peu moche :

[void][System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices.AccountManagement")


function Validate-Credentials([System.Management.Automation.PSCredential]$credentials)
{
    $pctx = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Domain, "domain")
    $nc = $credentials.GetNetworkCredential()
    return $pctx.ValidateCredentials($nc.UserName, $nc.Password)
}

$credentials = Get-Credential

Validate-Credentials $credentials

[Edit, deux ans plus tard] Pour les futurs lecteurs, veuillez noter que Test-Credential ou Test-PSCredential sont meilleurs noms, parce que Validate n'est pas valide powershell verbe (voir Get-Verb)

OriginalL'auteur Steve B | 2012-05-29