90 lines
3.2 KiB
PowerShell
90 lines
3.2 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í).
|
|
|
|
.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 |