Допустим, у меня есть объект 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
)