Files
AD-Tools/Find-InactiveUsers.ps1
2024-10-20 14:03:58 +02:00

100 lines
3.7 KiB
PowerShell

<#
.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í) a nejsou disablováni.
.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. Parametr je pole, takže je možné zadat více OU oddělených čárkou.
.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.
.EXAMPLE
.\Find-InactiveUsers.ps1 | Set-ADUser -Enabled $false
Deaktivuje všechny neaktivní uživatele v Active Directory.
.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