diff --git a/Find-InactiveUsers.ps1 b/Find-InactiveUsers.ps1 new file mode 100644 index 0000000..23e40cb --- /dev/null +++ b/Find-InactiveUsers.ps1 @@ -0,0 +1,90 @@ +<# +.SYNOPSIS + Tento skript vypíše všechny uživatele v Active Directory, kteří se nepřihlásili více jak 90 dní (ve výchozím nastavení). + +.DESCRIPTION + Tento skript používá Active Directory cmdlety pro nalezení všech uživatelů a následně kontroluje datum jejich posledního přihlášení. + Pokud uživatel neměl aktivní přihlášení déle než nastavený počet dní (ve výchozím stavu 90 dní), jeho informace se vypíší. + +.PARAMETER None + Skript nevyžaduje žádné vstupní parametry. + +.EXAMPLE + .\Find-InactiveUsers.ps1 + Tento příkaz zobrazí seznam uživatelů, kteří nebyli aktivní déle než 90 dní. + +.EXAMPLE + .\Find-InactiveUsers.ps1 | Sort-Object LastLogonDate | Format-Table -AutoSize + Tento příkaz zobrazí seznam uživatelů, kteří nebyli aktivní déle než 90 dní a zároveň je seřadí podle data posledního přihlášení. + +.EXAMPLE + .\Find-InactiveUsers.ps1 -Days 180 + Tento příkaz zobrazí seznam uživatelů, kteří nebyli aktivní déle než 180 dní. + +.EXAMPLE + .\Find-InactiveUsers.ps1 -Days 365 -IncludeDisabled + Tento příkaz zobrazí seznam uživatelů, kteří nebyli aktivní déle než 365 dní a zároveň vypíše i DISABLED uživatele. + +.EXAMPLE + .\Find-InactiveUsers.ps1 -SearchBase "OU=Users,DC=example,DC=com" + Tento příkaz zobrazí seznam uživatelů, kteří nebyli aktivní déle než 90 dní a vyhledává pouze v zadané OU. + +.EXAMPLE + .\Find-InactiveUsers.ps1 | Export-Csv -Path .\Export_InactiveUsers.csv -NoTypeInformation -Encoding UTF8 + Exportuje všechny neaktivní uživatele v Active Directory do CSV. + +.NOTES + Autor: Petr Štěpán + Datum vytvoření: 20.10.2024 + Verze: 1.0 + +.LINK + https://git.totalservice.cz/public/AD-Tools +#> + +param ( + [Parameter(Mandatory=$false, HelpMessage="Počet dní, po které se uživatel považuje za neaktivního.")] + [ValidateRange(15, [int]::MaxValue)] + [int]$Days = 90, + + [Parameter(Mandatory=$false, HelpMessage="Vypsat i DISABLED uživatele?")] + [switch]$IncludeDisabled = $false, + + [Parameter(Mandatory=$false, HelpMessage="Vyhledat uživatele pouze v určené OU.")] + [string]$SearchBase +) + +# Vyžaduje modul Active Directory +Import-Module ActiveDirectory + +# Výpočet data, které je o $Days dní starší než aktuální datum +$inactiveDate = (Get-Date).AddDays(-$Days) + +# Inicializace prázdného pole pro ukládání neaktivních uživatelů +$inactiveUsers = @() + +# Pokuď je nastaveno, vyhledej i DISABLED uživatele +if ($IncludeDisabled) { + $parameters = @{ + Filter = { + LastLogonDate -le $inactiveDate + } + } +} else { + $parameters = @{ + Filter = { + LastLogonDate -le $inactiveDate -and Enabled -eq $true + } + } +} + +# Pokud je nastavena OU, přidej ji do filtru +if ($SearchBase) { + $parameters.SearchBase = $SearchBase +} + +# Vyhledání uživatelů na základě dynamického filtru +$inactiveUsers = Get-ADUser @parameters -Properties Name, SamAccountName, LastLogonDate, Enabled, PasswordNeverExpires, CanonicalName, DistinguishedName + +# Výpis neaktivních uživatelů +$inactiveUsers | Select-Object Name, SamAccountName, LastLogonDate, Enabled, PasswordNeverExpires, CanonicalName, DistinguishedName \ No newline at end of file