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
Vous devez vous connecter pour publier un commentaire.
Je crois que l'aide
System.DirectoryServices.AccountManagement
est le moyen de faire moins moche:C'est à l'aide de l'outil ADSI (plus laid?):
C'est vraiment une tâche commune pour les sysadmin et développeur en particulier pour ceux qui travaillent dans l'ANNONCE c'est pourquoi (OMI) de microsoft ne AccountManagement. Ici vous pouvez voir une variété de la façon utilisée en c# pour effectuer cette tâche: stackoverflow.com/questions/290548/...
En fait, en général, les bonnes pratiques de développement s'applique ici. En particulier, je peut masquer la complexité de cette fonction et puis il suffit d'appeler la fonction 🙂
OriginalL'auteur CB.
J'ai eu un problème similaire avec un programme d'installation et nécessaire afin de vérifier les détails du compte de service fourni. Je voulais éviter d'utiliser le module AD dans Powershell comme je n'étais pas à 100% ce serait est installé sur la machine qui exécute le script.
J'ai fait le test à l'aide de la ci-dessous, il est un peu sale, mais il ne fonctionne pas.
OriginalL'auteur xenon8