Pracuję ze skryptem Powershell, który dodaje zaplanowane zadania do systemów w naszej domenie. Po uruchomieniu tego skryptu pojawi się monit o podanie hasła. Czasem tłukę palcem hasło i rozpoczyna się proces, który blokuje moje konto. Czy istnieje sposób na zweryfikowanie moich danych uwierzytelniających, aby upewnić się, że wpisane przeze mnie hasło zostanie sprawdzone w domenie?
Chciałbym znaleźć sposób na zapytanie kontrolera domeny. Przeprowadziłem kilka wyszukiwań w Google i powinienem być w stanie wykonać zapytanie WMI i wyłapać błąd. Jeśli to możliwe, chciałbym uniknąć tego stylu sprawdzania poprawności.
Jakieś pomysły? Z góry dziękuję.
domain
powershell
password
Doltknuckle
źródło
źródło
AccountManagement.PrincipalContext.ValidateCredentials()
tak nie jest (jeśli podasz hasło zabezpieczające hasło)?ActiveDirectory
modułu do wykonania zapytania LDAP?Tego właśnie użyłem w przeszłości; powinien działać z kontami komputerów lokalnych i „katalogiem aplikacji”, ale do tej pory korzystałem z niego tylko z poświadczeniami AD:
źródło
$context
argument jako konstruktor. PowerShell automatycznie konwertuje ciągi do wyliczenia. Jeszcze lepiej, po prostu wybierz[System.DirectoryServices.AccountManagement.ContextType]
typ$context
. Ponadto, dlaczego używaszbegin
iprocess
tutaj? Rurociąg wydaje się dziwnym sposobem korzystania z tej funkcji.$context
parametru[System.DirectoryServices.AccountManagement.ContextType]
nie jest opcją, ponieważ zestaw zawierający nie jest ładowany, dopóki nie zostanie wykonane ciało funkcji ; korzystanie z potoku jest pomocne, jeśli chcesz sprawdzić poprawność wielu poświadczeń.Add-Type
wywołanie nie mogło zostać przeniesione poza funkcję, do czasu przed jej zdefiniowaniem. Waham się, czyAdd-Type
wywołanie będzie bezwarunkowo powtarzane wewnątrz funkcji, nawet jeśli jest już załadowane. Walidacja wielu poświadczeń jednocześnie wydaje się przede wszystkim dziwną sytuacją. W rzadkich przypadkach jest to, czego chcesz, możesz łatwo zawinąć połączenieForEach-Object
, więc nie widzę powodu, aby komplikować z nim funkcję.Uważam ten post za przydatny, ale nie rozwiązał mojego problemu, ponieważ próbowałem uruchomić go ze skryptu z zalogowanym kontem lokalnego administratora. Wygląda na to, że nie działa jako lokalny administrator (tylko po zalogowaniu jako użytkownik domeny).
Jednak w końcu udało mi się znaleźć działające rozwiązanie i ponieważ było to tak wiele kłopotów, pomyślałem, że podzielę się nim tutaj, aby każdy, kto miał ten problem, uzyskał odpowiedź tutaj. Obie odpowiedzi na jednej stronie w zależności od potrzeb.
Zauważ, że wyżej w scipt (nieuwzględnione tutaj, ponieważ jest to tylko sekcja get-credentials) powergui jest zainstalowane i jest wymagane dla tego kodu poniżej (a także wiersza „Add-PSSnapin Quest.ActiveRoles.ADManagement”). Nie jestem pewien, co robi powergui, co jest inne, ale nikt inny nie mógł mi powiedzieć i to działa.
Podaj własną nazwę domeny w sekcjach „nazwa_domeny”.
źródło
(jeszcze) Inna wersja:
i
źródło