W każdym środowisku Active Directory z czasem gromadzą się nieaktywne konta użytkowników. Te nieaktualne konta stanowią zagrożenie dla bezpieczeństwa i mogą prowadzić do nieautoryzowanego dostępu. W tym wpisie pokażę Ci, w jaki sposób wyszukać nieaktywnych kont w Active Directory.
PowerShell
Aby znaleźć nieaktywne konta za pomocą programu PowerShell, konieczne będzie zainstalowanie narzędzi RSAT lub uruchomienie tych poleceń na kontrolerze domeny.
Wszystkie te przykłady wykorzystują właściwość LastLogonDate, która jest przekonwertowaną wartością LastLogonTimestamp.
Znajdź nieaktywne konta w ciągu ostatnich 60 dni
|
1 2 |
$When = ((Get-Date).AddDays(-60)).Date Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate |
Możesz wyeksportować wyniki do pliku CSV, dodając | export-csv -path c:\inactiveusers.csv
|
1 2 |
$When = ((Get-Date).AddDays(-60)).Date Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate | export-csv -path c:\inactiveusers.csv |
Aby ograniczyć zakres do jednostki organizacyjnej, należy użyć parametru SearchBase z nazwą wyróżniającą jednostki organizacyjnej (Zmień ścieżkę w AD na własną).
|
1 2 |
$When = ((Get-Date).AddDays(-60)).Date Get-ADUser -Filter {LastLogonDate -lt $When} -SearchBase "OU=Marketing,DC=beitadminpl,DC=local" -Properties * | select-object samaccountname,givenname,surname,LastLogonDate |
Znajdź nieaktywnych użytkowników i wyłącz konta
|
1 2 |
$When = ((Get-Date).AddDays(-60)).Date Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate | Disable-ADAccount |
W powyższym przykładzie dodałem na końcu polecenie | Disable-ADAccount, aby wyłączyć wszystkie nieaktywne konta.
Możesz również użyć tych poleceń do przeszukiwania kont komputerów, po prostu zmieniając polecenie Get-ADUser na Get-ADComputer.
Jak widać, łatwo jest zidentyfikować nieaktywne konta użytkowników za pomocą programu PowerShell, filtrując je według daty ostatniego logowania użytkownika. Jeśli znasz program PowerShell, możesz stworzyć bardzo wydajne narzędzie do czyszczenia kont w usłudze Active Directory.
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).
Jak wyszukać nieaktywne konta, lecz bez tych już zablokowanych?
$When = ((Get-Date).AddDays(-60)).Date
$OutputFile = „c:\inactiveusers_$(Get-Date -Format 'yyyyMMdd’).csv”
$Users = Get-ADUser -Filter {
LastLogonDate -lt $When -and
Enabled -eq $true
} -Properties LastLogonDate
$Users | Select-Object SamAccountName, GivenName, Surname, LastLogonDate |
Export-Csv -Path $OutputFile -NoTypeInformation -Encoding UTF8
$Users | ForEach-Object {
Disable-ADAccount -Identity $_
}