Последняя активность пользователя
Соромолотов Иван
Последняя активность пользователя
Всем привет!
Если вы администратор домена AD и хотите проверить, когда условный Петров последний раз заходил в свою учетную запись, то вам может пригодится скрипт, показывающий дату последней авторизации пользователя.
#Requires -Modules ActiveDirectory
param(
[string]$UserName
)
# 1. Если логин не передан через аргументы, показываем GUI-окно ввода
if (-not $UserName) {
try {
Add-Type -AssemblyName Microsoft.VisualBasic
$UserName = [Microsoft.VisualBasic.Interaction]::InputBox(
"Введите SamAccountName (логин) пользователя:",
"Поиск последнего входа в AD"
)
} catch {
# Fallback на консоль, если сборка VB недоступна
$UserName = Read-Host "Введите SamAccountName пользователя"
}
}
$UserName = $UserName.Trim()
if ([string]::IsNullOrWhiteSpace($UserName)) {
Write-Host "Ввод отменен. Завершение работы." -ForegroundColor Yellow
exit
}
# 2. Быстрая проверка существования пользователя
try {
$CheckUser = Get-ADUser -Identity $UserName -ErrorAction Stop
} catch {
Write-Error "Пользователь '$UserName' не найден в Active Directory."
exit
}
Write-Host "`n🔍 Опрос контроллеров домена для $UserName..." -ForegroundColor Cyan
$DCs = Get-ADDomainController -Filter *
$MaxLogonTime = 0
$LastDC = $null
# 3. Опрос всех DC для поиска точного lastLogon
foreach ($DC in $DCs) {
try {
$User = Get-ADUser -Identity $UserName -Server $DC.HostName -Properties lastLogon -ErrorAction Stop
if ($User.lastLogon -gt $MaxLogonTime) {
$MaxLogonTime = $User.lastLogon
$LastDC = $DC.HostName
}
} catch {
Write-Warning "Не удалось опросить DC $($DC.HostName)"
}
}
# 4. Вывод результата
if ($MaxLogonTime -gt 0) {
$LastLogonDate = [DateTime]::FromFileTime($MaxLogonTime)
Write-Host "`n✅ Результат:" -ForegroundColor Green
Write-Host "Пользователь : $($CheckUser.DisplayName) ($UserName)"
Write-Host "Последний вход : $LastLogonDate"
Write-Host "Контроллер : $LastDC"
} else {
Write-Host "`n⚠️ Пользователь '$UserName' никогда не входил в систему (атрибут lastLogon пуст)." -ForegroundColor Yellow
}
pauseЧто хочется добавить:
- Это ручной труд, который необходимо автоматизировать
Система, где используется только ручная проверка последней активности пользователя - это плохая система, однако порой мы живем и работаем в этих условиях.
Также этот скрипт может быть полезен, если у вас есть автоматическая проверка, но вы хотите перепроверить вручную или же вы можете взять этот скрипт и автоматизировать под нужды вашей компании.
- Не доверяйте случайным скриптам из интернета
Перепроверьте скрипт вручную или хотя бы дайте нейронке, которая проверит его за вас. Так вы сможете обезопасить свою инфраструктуру, а может быть и улучшить скрипт, оптимизировав его или подогнав под себя.
Если у вас получилось улучшить скрипт - пишите, я с радостью обновлю его.
- В написании скрипта использовались нейросети
Я давал свой скрипт Qwen3.7-Plus, чтобы она улучшила его и написала комментарии.