Nehmen wir an, ich habe eine PSCrendential
Objekt in PowerShell, das ich mit Get-Credential
.
Wie kann ich die Eingabe anhand von Active Directory validieren?
Inzwischen habe ich diesen Weg gefunden, aber ich finde ihn ein bisschen hässlich:
[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
[Bearbeiten, zwei Jahre später] Für zukünftige Leser sei darauf hingewiesen, dass Test-Credential
o Test-PSCredential
sind bessere Namen, denn Validate
ist kein gültiges Powershell-Verb (siehe Get-Verb
)