Ich arbeite mit einem Powershell-Skript, das geplante Aufgaben zu Systemen in unserer Domäne hinzufügt. Wenn ich dieses Skript ausführe, werde ich zur Eingabe meines Passworts aufgefordert. Ich habe manchmal fette Finger das Passwort und der Prozess beginnt, der mein Konto sperrt. Gibt es eine Möglichkeit, meine Anmeldeinformationen zu überprüfen, um sicherzustellen, dass meine Eingaben für die Domain gültig sind?
Ich möchte eine Möglichkeit finden, den Domänencontroller abzufragen. Ich habe einige Google-Suchen durchgeführt und sollte in der Lage sein, eine WMI-Abfrage durchzuführen und nach einem Fehler zu suchen. Ich möchte diesen Validierungsstil nach Möglichkeit vermeiden.
Irgendwelche Ideen? Danke im Voraus.
quelle
AccountManagement.PrincipalContext.ValidateCredentials()
ja , habe ich dann Recht, wenn ich davon ausgehe , dass dies nicht der Fall ist (wenn Sie eine Sicherheitsabfrage für das Kennwort angeben)?ActiveDirectory
Modul nicht für Ihre LDAP-Abfrage?Dies ist, was ich in der Vergangenheit verwendet habe; Es soll für lokale Computerkonten und "Anwendungsverzeichnis" funktionieren, aber bisher habe ich es nur mit AD-Anmeldeinformationen erfolgreich verwendet:
quelle
$context
, dem Konstruktor das Argument zu übergeben. PowerShell konvertiert Zeichenfolgen automatisch in eine Aufzählung. Besser noch, machen Sie einfach[System.DirectoryServices.AccountManagement.ContextType]
die Art von$context
. Auch warum benutzt dubegin
undprocess
hier? Die Pipeline scheint eine seltsame Art zu sein, diese Funktion zu verwenden.$context
Parameter ist[System.DirectoryServices.AccountManagement.ContextType]
keine Option, da die Anordnung , die nicht bis die Funktion geladen wird Körper ausgeführt wird; Die Verwendung der Pipeline ist hilfreich, wenn Sie mehrere Anmeldeinformationen überprüfen möchten.Add-Type
Aufruf nicht außerhalb der Funktion verschoben werden kann, bevor seine Definition ausgeführt wird. Ich zögere, einenAdd-Type
Anruf innerhalb der Funktion unbedingt wiederholt ausführen zu lassen, auch wenn sie ohnehin schon geladen ist. Das gleichzeitige Überprüfen mehrerer Anmeldeinformationen erscheint zunächst als eine merkwürdige Situation. In dem seltenen Fall, dass Sie dies wünschen, können Sie den Anruf einfach einwickelnForEach-Object
, sodass ich keinen Grund sehe, die Funktion damit zu komplizieren.Ich fand diesen Beitrag nützlich, konnte mein Problem jedoch nicht lösen, da ich versuchte, ihn über ein Skript auszuführen, bei dem das lokale Administratorkonto angemeldet war. Es scheint nicht als lokaler Administrator zu funktionieren (nur wenn Sie als Domänenbenutzer angemeldet sind).
Aber ich habe es endlich geschafft, eine funktionierende Lösung zu finden und da es so viel Mühe gab, dachte ich, ich würde es hier teilen, damit jeder andere mit diesem Problem die Antwort hier haben kann. Beide Antworten auf einer Seite je nach Bedarf.
Beachten Sie, dass oben im Skript (hier nicht enthalten, da dies nur der Abschnitt zum Abrufen von Anmeldeinformationen ist) powergui installiert ist und für diesen Code (sowie für die Zeile "Add-PSSnapin Quest.ActiveRoles.ADManagement") erforderlich ist. Ich bin nicht sicher, was Powergui anders macht, aber niemand sonst kann es mir sagen und es funktioniert.
Ersetzen Sie Ihren eigenen Domainnamen in den Abschnitten "domain_name".
quelle
(noch) eine andere Version:
und
quelle