Je travaille avec un script Powershell qui ajoute des tâches planifiées aux systèmes de notre domaine. Lorsque j'exécute ce script, il me demandera mon mot de passe. Parfois, je tape du doigt sur le mot de passe et le processus démarre, ce qui bloque mon compte. Existe-t-il un moyen de vérifier mes informations d'identification pour s'assurer que ce que j'ai tapé sera validé avec le domaine?
Je voudrais trouver un moyen d'interroger le contrôleur de domaine. J'ai fait quelques recherches sur Google et je devrais pouvoir faire une requête WMI et intercepter une erreur. J'aimerais éviter ce style de validation si possible.
Des idées? Merci d'avance.
domain
powershell
password
Doltknuckle
la source
la source
AccountManagement.PrincipalContext.ValidateCredentials()
n'est pas le cas (si vous fournissez une chaîne de sécurité pour le mot de passe)?ActiveDirectory
module pour effectuer votre requête LDAP?C'est ce que j'ai utilisé dans le passé; il est censé fonctionner pour les comptes de machines locales et le «répertoire d'application», mais jusqu'à présent, je ne l'ai utilisé qu'avec succès avec les informations d'identification AD:
la source
$context
l'argument au constructeur. PowerShell convertira automatiquement les chaînes en une énumération. Mieux encore, faites simplement[System.DirectoryServices.AccountManagement.ContextType]
le type de$context
. Aussi, pourquoi utilisez-vousbegin
etprocess
ici? Le pipeline semble être une façon étrange d'utiliser cette fonction.$context
paramètre[System.DirectoryServices.AccountManagement.ContextType]
n'est pas une option, car l'assembly contenant n'est pas chargé tant que le corps de la fonction n'est pas exécuté; l'utilisation du pipeline est utile si vous souhaitez valider plusieurs informations d'identification.Add-Type
appel ne puisse pas être déplacé en dehors de la fonction, avant l'exécution de sa définition. J'hésite à ce qu'unAdd-Type
appel soit exécuté de manière inconditionnelle à plusieurs reprises à l'intérieur de la fonction, même si elle est déjà chargée, de toute façon. La validation simultanée de plusieurs informations d'identification semble être une situation étrange en premier lieu. Dans les rares cas, c'est ce que vous voulez, vous pouvez facilement envelopper l'appelForEach-Object
, donc je ne vois pas de raison de compliquer la fonction avec.J'ai trouvé cet article utile, mais il n'a pas résolu mon problème car j'essayais de l'exécuter à partir d'un script avec le compte d'administrateur local connecté. Il ne semble pas fonctionner en tant qu'administrateur local (uniquement lorsque vous êtes connecté en tant qu'utilisateur de domaine).
Cependant, j'ai finalement réussi à obtenir une solution de travail et comme c'était tellement difficile, je pensais que je la partagerais ici pour que toute autre personne ayant ce problème ait la réponse ici. Les deux réponses sur une seule page en fonction de vos besoins.
Notez que plus haut dans le scipt (non inclus ici car il ne s'agit que de la section get-credentials) powergui est installé et est une exigence pour ce code ci-dessous (ainsi que la ligne "Add-PSSnapin Quest.ActiveRoles.ADManagement"). Je ne sais pas quel powergui fait, c'est différent, mais personne d'autre ne pourrait me le dire et cela fonctionne.
Substituez votre propre nom de domaine dans les sections "nom_domaine".
la source
(encore) Une autre version:
et
la source