<# .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 Days Počet dní, po kterých se uživatel považuje za neaktivního. Ve výchozím stavu je nastaveno 90 dní. .PARAMETER IncludeDisabled Pokud je tento přepínač nastaven, skript zobrazí i DISABLED uživatele. .PARAMETER SearchBase Pokud je tento parametr nastaven, skript vyhledává uživatele pouze v určené OU. .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