Użycie Get-ADUser do uzyskania różnych informacji o użytkownikach domeny AD

Get-aduser Jest to jedno z głównych poleceń cmdlet programu PowerShell, których można użyć do uzyskania różnych informacji o użytkownikach Active Directory i ich atrybutach. Za pomocą polecenia cmdlet Get-ADUser można uzyskać wartość dowolnego atrybutu konta użytkownika AD, wyświetlić listę użytkowników w domenie z niezbędnymi atrybutami i wyeksportować ich do pliku CSV, a także użyć różnych kryteriów, aby wybrać użytkowników domeny.

Polecenie cmdlet Get-ADUser jest dostępne od PowerShell 2.0 i jest częścią specjalnego modułu Active Directory, modułu Active Directory dla Windows PowerShell (wprowadzonego w Windows Server 2008 R2). Polecenia cmdlet RSAT-AD-PowerShell umożliwiają wykonywanie różnych operacji na obiektach katalogu AD.

Uwaga. Wcześniej musiałem używać różnych narzędzi, aby uzyskać informacje o atrybutach konta użytkownika AD: konsola ADUC (w tym zapisane żądania AD), skrypty vbs, narzędzie dsquery itp. Wszystkie te narzędzia mogą łatwo zastąpić polecenie cmdlet Get-ADUser..

W tym przykładzie pokażemy, jak korzystać z polecenia cmdlet Get-ADUser programu PowerShell, aby uzyskać informacje o czasie ostatniej zmiany hasła użytkownika, wygaśnięcia hasła i innych danych użytkownika.

Treść

  • Jak znaleźć użytkownika w AD i wyświetlić jego właściwości za pomocą Get-ADUser?
  • Pobieranie użytkowników z wielu jednostek organizacyjnych za pomocą Get-ADUser
  • Uzyskaj adresy e-mail użytkowników z AD
  • Get-ADUser: eksportuj użytkowników domeny do pliku tekstowego lub pliku CSV / Excel
  • Get-ADUser -Filter: Sortuj i filtruj listę użytkowników AD
  • Get-ADUser: Różne przykłady użycia

Jak znaleźć użytkownika w AD i wyświetlić jego właściwości za pomocą Get-ADUser?

Aby użyć modułu RSAT-AD-PowerShell, musisz uruchomić konsolę PowerShell z uprawnieniami administratora i zaimportować moduł za pomocą polecenia:

Aktywowany katalog Import-Module

W systemie Windows Server 2012 i nowszych moduł RSAT-AD-PowerShell jest instalowany domyślnie po wdrożeniu roli Usługi domenowe w usłudze Active Directory (AD DS) na serwerze. Aby zainstalować moduł na serwerze będącym członkiem domeny, uruchom polecenie:

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

W stacjonarnej wersji systemu Windows (na przykład Windows 10), aby dowódca Get-AdUser działał, musisz zainstalować odpowiednią wersję RSAT i włączyć komponent w Panelu sterowania Moduł Active Directory dla Windows PowerShell (Narzędzia administracji zdalnej serwera -> Narzędzia administracji roli -> Narzędzia AD DS i AD LDS -> Narzędzia AD DS).

Możesz zainstalować moduł AD z PowerShell:

Add-WindowsCapability -online -Name „Rsat.ActiveDirectory.DS-LDS.Tools ~~~~ 0.0.1.0”

Istnieje również sposób użycia modułu RSAT-AD-PowerShell bez instalowania go na komputerze. Wystarczy skopiować główne pliki i zaimportować moduł do sesji PoSh:

Moduł importu „C: \ PS \ ADPoSh \ Microsoft.ActiveDirectory.Management.dll”
Moduł importu „C: \ PS \ ADPoSh \ Microsoft.ActiveDirectory.Management.resources.dll”

Pełną listę wszystkich argumentów polecenia cmdlet Get-ADUser można uzyskać w następujący sposób:

pomoc Get-ADUser

Aby użyć polecenia cmdlet Get-ADUser, nie trzeba używać konta z uprawnieniami administratora domeny. Każdy autoryzowany użytkownik domeny AD może uruchamiać polecenia PowerShell, aby uzyskać wartości większości atrybutów obiektów AD (oprócz chronionych, patrz przykład LAPS). Jeśli chcesz uruchomić polecenie Get-ADUser z innego konta, użyj parametru Poświadczenie.

Aby wyświetlić listę wszystkich kont domeny, uruchom polecenie:

Get-ADUser -filter *

Jest ważne. Nie zaleca się uruchamiania tego polecenia w domenach AD z dużą liczbą kont, np prawdopodobnie przeciążenie kontrolera domeny, który dostarcza dane.

Aby zmienić atrybuty użytkownika, użyj polecenia cmdlet Set-ADUser.

Domyślnie polecenie cmdlet Get-ADUser zwraca tylko 10 podstawowych atrybutów (spośród ponad 120 właściwości konta użytkownika): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, status konta (Enabled: True / False zgodnie z atrybutem UserAccountControl) it .d.

Dane wyjściowe polecenia cmdlet nie zawierają informacji o czasie ostatniej zmiany hasła użytkownika.

Aby wykonać żądanie na określonym kontrolerze domeny, używany jest parametr - Server:

Get-ADUSer -Server DC01.winitpro.loc -tstuser tożsamości

Aby wyświetlić pełne informacje o wszystkich dostępnych atrybutach użytkownika tuser, uruchom polecenie:

Get-ADUser -identity tuser-Właściwości *

Polecenie cmdlet Get-ADUser z parametrem Właściwości * wyświetla wszystkie atrybuty użytkownika AD i ich wartości.

Spróbujmy zmienić parametry polecenia Get-ADUser, aby wyświetlały tylko potrzebne nam atrybuty użytkownika. Możesz wyświetlić jednocześnie kilka atrybutów użytkownika:

  • Hasło wygasło
  • PasswordLastSet
  • PasswordNeverExpires
  • lastlogontimestamp

Uruchom polecenie:

Get-ADUser tuser - właściwości PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp

Teraz informacje o użytkowniku zawierają informacje o stanie konta (Wygasłe: Prawda / Fałsz), dacie zmiany hasła i godzinie ostatniego wejścia do domeny (lastlogontimestamp). Prezentujemy informacje w wygodniejszej formie tabelarycznej i usuwamy wszystkie niepotrzebne atrybuty za pomocą Select-Object -Property lub Format-Table:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | Nazwa, hasło, hasło wygasłe, hasło, hasło, hasło, hasło

Pobieranie użytkowników z wielu jednostek organizacyjnych za pomocą Get-ADUser

Aby usunąć użytkowników tylko z określonego kontenera domeny (OU), użyj opcji SearchBase:

Get-ADUser -SearchBase 'OU = Moskwa, DC = winitpro, DC = loc' -filter * -property HasłoExpired, PasswordLastSet, PasswordNeverExpires | Nazwa, hasło, hasło wygasłe, hasło, hasło, hasło, hasło

Jeśli chcesz wybrać użytkowników z kilku jednostek organizacyjnych jednocześnie, użyj następującej konstrukcji:

$ OUs = „OU = Moskwa, DC = winitpro, DC = lokalny”, „OU = SPB, DC = winitpro, DC = loc”
$ OUs | foreach Get-ADUser -SearchBase $ _ -Filter * | wybierz Nazwa, włączone

Uzyskaj adresy e-mail użytkowników z AD

Adres e-mail użytkownika jest jednym z atrybutów w usłudze Active Directory. Aby wyświetlić listę adresów e-mail użytkowników, należy dodać pole EmailAddress do wybranych pól polecenia cmdlet Get-ADUser.

Get-ADUser -filter * -properties Adres e-mail -SearchBase „OU = MSK, DC = winitpro, DC = loc” | nazwa obiektu wybierz, adres e-mail

Wyświetl listę aktywnych kont z adresami do korespondencji:

Get-ADUser -Filter (mail -ne "null") -i (Enabled -eq "true") -Properties Nazwisko, GivenName, mail | Wybierz nazwę obiektu, nazwisko, imię, adres e-mail | Tabela formatów

Lista użytkowników, którzy nie mają adresu e-mail:

Get-ADUser -Filter * -Properties EmailAddress | gdzie -Property Adres e-mail -eq $ null

Poniższy przykład umożliwia rozładowanie książki adresowej firmowych adresów e-mail w postaci pliku csv, który można później zaimportować do programu Outlook lub Mozilla Thunderbird:

Get-ADUser -Filter (mail -ne "null") -i (Enabled -eq "true") -Properties Nazwisko, GivenName, mail | Wybierz nazwę obiektu, nazwisko, imię, adres e-mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $ env: temp \ mail_list.csv

Get-ADUser: eksportuj użytkowników domeny do pliku tekstowego lub pliku CSV / Excel

Wynikową listę użytkowników domeny z atrybutami można przesłać do pliku tekstowego:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Nazwa, PasswordExpired, PasswordLastSet, PasswordNeverExpires> C: \ temp \ users.txt

Lub możesz przesłać użytkowników AD do pliku CSV, który później zostanie wygodnie wyeksportowany do programu Excel.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | wybierz Nazwa, Hasło wygasłe, Hasło ostatnieSet, Hasło nieaktualne | Export-csv -path c: \ temp \ user-password-expires-2019.csv -Append -Encoding UTF8

Get-ADUser -Filter: Sortuj i filtruj listę użytkowników AD

Za pomocą parametru -Filtruj Możesz filtrować listę użytkowników według jednego lub więcej atrybutów. Można podać wartości niektórych atrybutów użytkowników Active Directory jako argumenty dla tego parametru. Podczas korzystania z parametru -Filter polecenie cmdlet Get-ADUser wyświetla tylko użytkowników spełniających kryteria filtru..

Na przykład wymienimy konta użytkowników Enabled, których nazwa zawiera „Dmitry„(w poniższym przykładzie zastosowano filtr wielokrotny, można łączyć warunki przy użyciu standardowych operatorów porównania logicznego programu PowerShell):

Get-AdUser -Filter „(podobny do nazwy„ * Dmitry * ”) -i (włączony -eq„ True ”)„ -Properties * | wybierz nazwę, włączony

Opcjonalnie za pomocą sortuj obiekt Możesz posortować listę użytkowników według określonego atrybutu. Możesz również użyć polecenia cmdlet, aby pobrać użytkowników. gdzie. Tutaj możesz również użyć kilku kryteriów filtrowania jednocześnie..

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU = Moskwa, DC = winitpro, DC = loc' | gdzie $ _. nazwa-jak „* Dmitry *” -i $ _. Włączone -eq $ true | sort-object PasswordLastSet | wybierz obiekt nazwa, hasło wygaśnięcia, hasło, zestaw, hasło, hasło

W ten sposób możesz zbudować tabelę z wszelkimi niezbędnymi atrybutami użytkowników Active Directory.

Get-ADUser: Różne przykłady użycia

Następnie dajemy kilka przydatnych opcji zapytań dla użytkowników Active Directory za pomocą różnych filtrów. Możesz je połączyć, aby uzyskać niezbędną listę użytkowników domeny:

Lista użytkowników AD, których nazwa zaczyna się od Roman:

Get-ADUser -filter jak nazwa „Roman *”

Aby obliczyć całkowitą liczbę wszystkich kont w Active Directory:

Get-ADUser -Filter SamAccountName-like "*" | Zmierz obiekt

Lista wszystkich aktywnych (nie zablokowanych) kont w AD:

Get-ADUser -Filter Enabled -eq „True” | Wybierz obiekt SamAccountName, imię, nazwisko, imię ... | Tabela formatów

Wydrukuj datę utworzenia konta użytkownika w domenie:

get-aduser -Filter * -Properties Nazwa, WhenCreated | Wybierz nazwę, kiedy zostanie utworzona

Lista wszystkich użytkowników utworzonych w ciągu ostatnich 24 godzin (przykład tutaj):

$ lastday = ((Get-Date) .AddDays (-1))
Get-ADUser -filter (whencreated -ge $ lastday)

Lista kont z wygasłym hasłem (hasło jest skonfigurowane w zasadach domeny):

Get-ADUser -filter Enabled -eq $ True -properties nazwa, hasłoExpired | gdzie $ _. PasswordExpired | wybierz nazwę, hasłoexpired

Za pomocą poleceń cmdlet Get-AdUser i Add-ADGroupMember można tworzyć dynamiczne grupy użytkowników AD (w zależności od miasta, stanowiska lub działu).

Zadanie: w przypadku listy kont przechowywanych w pliku tekstowym (jedno konto w wierszu) należy pobrać telefon użytkownika z usługi AD i przesłać informacje do pliku tekstowego csv (w celu dalszego wygenerowania raportu w programie Excel).

Import-Csv c: \ ps \ usernsme_list.csv | ForEach
Get-ADUser -identity $ _. Użytkownik-Właściwości Nazwa, numer telefonu |
Wybierz Nazwa, numer telefonu |
Export-CSV c: \ ps \ export_ad_list.csv -Append -Encoding UTF8

Użytkownicy, którzy nie zmienili hasła w ciągu ostatnich 90 dni:

90_Dni = = Get-Date .adddays (-90)
Get-ADUser -filter (passwordlastset -le $ 90_days)

Aby pobrać zdjęcie użytkownika z Active Directory i zapisać je w pliku jpg:

$ user = Get-ADUser winadmin -Properties thumbnailPhoto
$ user.thumbnailPhoto | Set-Content winadmin.jpg -Bajt kodujący

Lista grup, w których znajduje się konto użytkownika

Get-AdUser winadmin -Properties memberof | Wybierz członka-rozwiń właściwość członka

Lista użytkowników z jednostki organizacyjnej, którzy są członkami określonej grupy zabezpieczeń:

Get-ADUser -SearchBase 'OU = Moskwa, DC = winitpro, DC = loc' -Filter * -properties memberof | Where-Object ($ _. Członek-jak „* Administratorzy WKS *”)

Wymień komputery domeny, do których użytkownik może wejść (ograniczenie poprzez atrybut LogonWorkstations):

Get-ADUser AIvanov -Properties LogonWorkstations | Nazwa listy formatów, stacje robocze logowania

Wskazówka. Aby uzyskać informacje o komputerach Active Directory, użyj polecenia cmdlet Get-ADComputer.