# Укажите DN (Distinguished Name) вашей OU
$ouDN = "OU=Computer,DC=tap,DC=root,DC=int"
# Получите все компьютеры в указанной OU
$computersInOU = Get-ADComputer -Filter * -SearchBase $ouDN -Property LastLogonDate
# Установите пороговую дату
$thresholdDate = Get-Date "01.01.2024"
# Отключите каждый компьютер и добавьте комментарий, если LastLogonDate равен null или меньше порога
foreach ($computer in $computersInOU) {
# Получаем дату последнего входа учетной записи компьютера
$lastLogonDate = $computer.LastLogonDate
# Проверяем, если LastLogonDate равен null или меньше пороговой даты
if ($lastLogonDate -eq $null -or $lastLogonDate -lt $thresholdDate) {
# Отключаем учетную запись компьютера
Disable-ADAccount -Identity $computer
# Добавляем комментарий о времени отключения
$currentDateTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$comment = "Учетная запись была отключена $currentDateTime"
# Обновляем описание учетной записи
Set-ADComputer -Identity $computer -Description $comment
Write-Host "Учетная запись компьютера $($computer.Name) отключена. Комментарий добавлен."
} else {
Write-Host "Учетная запись компьютера $($computer.Name) не отключена, так как LastLogonDate больше или равен 01/01/2024."
}
}
Комментарии по коду:
1. Получение всех компьютеров: Скрипт правильно получает все компьютеры из указанной OU.
2. Проверка LastLogonDate: Логика проверки даты последнего входа корректна.
3. Отключение учетной записи: Использование Disable-ADAccount также верно.
4. Добавление комментария: Обновление описания с добавлением комментария выполняется правильно.
Рекомендации:
• Тестирование: Перед запуском на продуктивной среде рекомендую протестировать скрипт в тестовой OU или на нескольких тестовых учетных записях.
• Логи: Рассмотрите возможность ведения логов (например, в файл) для отслеживания всех отключений и комментариев.
• Безопасность: Убедитесь, что у вас есть необходимые разрешения для выполнения этих команд.