Zmień hasło użytkownika w AD z PowerShell

W tym artykule przyjrzymy się, jak zmienić (zresetować) hasło jednego lub kilku użytkowników Active Directory z wiersza poleceń programu PowerShell za pomocą polecenia cmdlet Set-ADAccountPassword.

Większość administratorów jest przyzwyczajona do zmiany (resetowania) haseł użytkowników w AD za pomocą graficznej przystawki dsa.msc (Użytkownicy i komputery usługi Active Directory - ADUC). Aby to zrobić, znajdź konto użytkownika w AD, kliknij je prawym przyciskiem myszy i wybierz „Resetuj hasło”. Jest to prosty i bezpośredni sposób..

Ale nie będzie można korzystać z konsoli ADUC, gdy trzeba od razu zresetować hasło wielu użytkownikom, użyj procedury resetowania hasła jako jednej z akcji skryptu. W takim przypadku możesz zresetować hasła w AD z wiersza polecenia PowerShell..

Treść

  • Jak zresetować hasło użytkownika w AD?
  • Zmień hasło wielu użytkowników w AD

Jak zresetować hasło użytkownika w AD?

Aby zresetować hasło użytkownika w AD, użyj polecenia cmdlet Set-ADAccountPassword, zawarty w module Active Directory dla Windows PowerShell (w wersjach Windows dla komputerów stacjonarnych jest częścią RSAT, aw wersjach serwerowych jest instalowany jako osobny komponent przystawek AD DS i narzędzi wiersza poleceń). Przed użyciem modułu należy go zaimportować do sesji PowerShell:

Moduł importu ActiveDirectory

Aby zresetować hasło, twoje konto musi mieć odpowiednie uprawnienia. Oczywiście zwykli użytkownicy AD nie mogą domyślnie resetować hasła innych kont, aby ta funkcja się pojawiła, użytkownik (grupa użytkowników) musi mieć delegowane prawo do resetowania hasła w kontenerze AD lub dodania go do grupy domen Operatorzy kont.

Aby sprawdzić, czy Twoje konto ma prawo do zresetowania hasła określonego użytkownika, otwórz jego właściwości, przejdź do karty Bezpieczeństwo -> Zaawansowane -> Efektywny dostęp -> określ nazwę swojego konta -> upewnij się, że masz uprawnienia do resetowania hasła.

Aby zresetować hasło użytkownika z kontem dakimov i ustawić nowe hasło SuperStr0n @ p1, uruchom polecenie:

Set-ADAccountPassword dakimov -Reset -NewPassword (ConvertTo-SecureString -AsPlainText „SuperStr0n @ p1” -Force -Verbose) -PassThru

Aby automatycznie generować złożone hasła dla użytkowników, możesz użyć metody GeneratePassword opisanej w artykule „Generowanie losowych haseł za pomocą PowerShell”.

Domyślnie cmdlet zwraca obiekt i nie wyświetla niczego w konsoli. Aby wyświetlić informacje o obiekcie użytkownika w AD, używamy parametru -Passthru.

Jako nazwę użytkownika możesz podać sAMAccountName (jak w naszym przypadku), objectGUID, SID użytkownika lub jego nazwę wyróżniającą (nazwa wyróżniająca, na przykład CN = Akimov, OU-Users, DC = winitpro, DC = ru).

Jeśli nie określisz parametru podczas zmiany hasła użytkownika -Zresetuj, musisz podać stare i nowe hasło do konta.

Uwaga. Jeśli wystąpi błąd podczas resetowania hasła za pomocą polecenia cmdlet Set-ADAccountPassword:

Set-ADAccountPassword: Hasło nie spełnia wymagań dotyczących długości, złożoności ani historii domeny.

Oznacza to, że określone wymagania dotyczące złożoności, długości itp. Określone w polityce dotyczącej haseł domeny lub szczegółowych zasad haseł dotyczących konta dotyczą określonego hasła..

Jeśli włączyłeś historię poleceń PowerShell i nie chcesz, aby hasła były wyświetlane w postaci zwykłego tekstu w konsoli PoSh, musisz przekonwertować hasło na bezpieczną linię, tak jak podczas tworzenia użytkownika (więcej o ochronie hasła w skryptach PowerShell tutaj):

$ NewPasswd = Read-Host "Wprowadź nowe hasło użytkownika" -AsSecureString

Teraz zresetuj hasło:

Set-ADAccountPassword dakimov -Reset -NewPassword $ NewPasswd -PassThru

Podczas resetowania hasła możesz wymusić blokadę akademickiego rekordu, nawet jeśli jest on zablokowany (aby dowiedzieć się, z którego komputera konto jest zablokowane, zobacz artykuł Znajdowanie źródła blokady użytkownika w usłudze Active Directory):

Odblokuj-ADAccount -Identity dakimov

Aby użytkownik mógł zmienić hasło na nowe przy następnym logowaniu do domeny, uruchom polecenie:

Set-ADUser -Identity dakimov -ChangePasswordAtLogon $ true

Możesz połączyć polecenie zmiany hasła z wymogiem zmiany hasła (atrybut userAccountControl) w jednym wierszu:

Set-ADAccountPassword dakimov -NowePassword $ NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $ True

Za pomocą polecenia cmdlet Get-ADUser możesz sprawdzić, czy hasło zostało pomyślnie zresetowane, wyświetlając czas ostatniej zmiany konta:

Get-ADUser dakimov-Właściwości * | wybierz imię, podaj *

Po zresetowaniu hasła zdarzenie EventID 4724 jest logowane na kontrolerze domeny (DC). To zdarzenie pomaga zidentyfikować konto, które przeprowadziło resetowanie hasła użytkownika..

Zmień hasło wielu użytkowników w AD

Powyżej pokazaliśmy, jak zresetować hasło jednego użytkownika w AD z PowerShell. Teraz zastanów się nad innym scenariuszem - gdy musisz zmienić hasła kilku użytkowników jednocześnie.

Najprostszym przypadkiem jest zresetowanie haseł wszystkich użytkowników posiadających określone właściwości konta. Na przykład musisz zmusić wszystkich pracowników działu sprzedaży do zresetowania hasła do tego samego i zmusić ich do zmiany przy następnym logowaniu:

get-aduser -filter "dział -eq„ Dział sprzedaży ”-AND włączony -eq„ Prawda ”„ | Set-ADAccountPassword -NowePassword $ NewPasswd -Reset -PassThru | Set-ADuser -ChangePasswordAtLogon $ True

Rozważ inną sprawę. Załóżmy, że masz plik CSV / Excel, który zawiera listę użytkowników, którzy muszą zresetować hasła i unikalne hasło dla każdego użytkownika. Format pliku Users.csv:

sAMAccountName; NewPassword
aivanov; PaSSde0r1
bpetrov; Nowe $ isde01
ssidorov; k @ nndj! 223

Za pomocą następującego skryptu PowerShell można zresetować hasło do każdego konta w pliku:

Import-Csv users.csv -Delimiter ";" | Foreach
$ NewPass = ConvertTo-SecureString -AsPlainText $ _. NewPassword -Force
Set-ADAccountPassword -Identity $ _. SAMAccountName -NewPassword $ NewPass -Reset -PassThru | Set-ADUser -ChangePasswordAtLogon $ false

Po wykonaniu tego kodu zostanie ustawione nowe unikalne hasło dla wszystkich użytkowników w pliku..