Проверка PowerShell PSCredential

Допустим, у меня есть объект PSCrendentialв PowerShell, который я создал с помощью Get-Credential.

Как проверить ввод по Active Directory?

К настоящему времени я нашел этот путь, но я чувствую, что это немного уродливо:

[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

[Редактировать, два года спустя]Для будущих читателей обратите внимание, что Test-Credentialили Test-PSCredentialявляются лучшими именами, потому что Validateне является допустимым глаголом powershell (см. Get-Verb)

10
задан Steve B 5 March 2014 в 08:41
поделиться