Использование PowerShell для проверки работоспособности контроллеров домена

Опубликовано: 15 Марта, 2023
Использование PowerShell для проверки работоспособности контроллеров домена

PowerShell предлагает большую гибкость, когда речь идет о взаимодействии с операционными системами Windows и взаимодействии с ролями и функциями Windows Server. Microsoft предоставляет модули PowerShell практически для всех ролей и функций. Хотя конкретного модуля PowerShell, который можно использовать для проверки работоспособности контроллеров домена, не существует, вы можете использовать базовые классы PowerShell и WMI для проверки, как описано в этой статье.

Зачем проверять работоспособность контроллеров домена?

Прежде чем мы начнем использовать сценарий PowerShell, представленный в этой статье, необходимо понять, что контроллеры домена Active Directory должны быть правильно исправлены, чтобы избежать любых угроз безопасности в среде. Например, если контроллер домена работает более двух месяцев, это может указывать на то, что контроллер домена не был исправлен, и поэтому он не был перезагружен. Таким образом, проверяя время безотказной работы, вы можете узнать, был ли исправлен контроллер домена или нет, потому что для исправления контроллера домена требуется перезагрузка, которая, в свою очередь, сбрасывает время безотказной работы. Во-вторых, контроллеры домена необходимо регулярно перезагружать, чтобы освободить память от LSASS.exe.

Как проверить время работы одного контроллера домена

Вы можете использовать PowerShell для проверки времени безотказной работы контроллеров домена. Вы можете использовать командлет PowerShell Get-WmiObject для доступа к классу Win23_OperatingSystem, который включает свойство LastBootUpTime. Свойство LastBootUpTime показывает время последней загрузки контроллера домена. Пример проверки работоспособности одного контроллера домена показан в сценарии PowerShell ниже:

$DCName = "DC1.TechGenix.com" $operatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $DCName $RTime=[ManagementDateTimeConverter]::ToDateTime($operatingSystem.LastBootUpTime) $LocalTime=[ManagementDateTimeConverter]::ToDateTime($operatingSystem.LocalDateTime ) $CurTimeZone=$operatingSystem.CurrentTimeZone $StatusNow = "" $R = $RTime $Z = Get-Date $DayNotRebooted = (New-TimeSpan -Start $R -End $Z).Days IF ($DayNotRebooted -ge 60) { $StatusNow = "ВНИМАНИЕ! За последние 60 дней не выполнялась перезагрузка." } else { $StatusNow = "контроллер домена был перезагружен в течение 60 дней." } $СтатусСейчас

Как видите, приведенный выше сценарий PowerShell проверяет время безотказной работы контроллера домена с именем «DC1.TechGenix.com» и сообщает «ВНИМАНИЕ: не перезагружался за последние 60 дней», если контроллер домена не перезагружался в течение последних 60 дней и « контроллер домена был перезагружен в течение 60 дней», если контроллер домена был перезагружен в течение 60 дней. Вы можете изменить значение «дни без перезагрузки» в приведенном выше сценарии в строке « IF ($DaysNotRebooted –qe 60) ».

Как проверить время работы нескольких контроллеров домена

В то время как приведенный выше сценарий PowerShell проверяет время безотказной работы для одного контроллера домена, приведенный ниже сценарий PowerShell можно использовать для проверки времени безотказной работы для нескольких контроллеров домена или контроллеров домена, указанных в CSV-файле. Предположим, мы создали CSV-файл с именем AllDCs.CSV и сохранили его в папке C:Temp. Файл содержит имена контроллеров домена в каждой строке. Когда вы выполняете приведенный ниже сценарий PowerShell, он проверяет все контроллеры домена один за другим, а затем создает отчет в папке C:Temp с именем DCUpTimeReport.CSV.

$AllDCs = "C:TempAllDCs.CSV" $ReportFile = "C:TempDCUpTimeReport.CSV" $STR = "DCName, Message" Add-Content $ReportFile $STR ForEach ($ItemName в GC $AllDCs) { $operatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $ItemName $RTime=[ManagementDateTimeConverter]::ToDateTime($operatingSystem.LastBootUpTime) $LocalTime=[ManagementDateTimeConverter]::ToDateTime($operatingSystem.LocalDateTime) $CurTimeZone=$operatingSystem.CurrentTimeZone $ StatusNow = "" $R = $RTime $Z = Get-Date $DayNotRebooted = (New-TimeSpan -Start $R -End $Z).Days IF ($DayNotRebooted -ge 60) { $StatusNow = "ВНИМАНИЕ: Не перезагружен за последние 60 дней». } else { $StatusNow = "контроллер домена был перезагружен в течение 60 дней." } $STR = $ItemName+","+$StatusNow Add-Content $ReportFile $STR }

После выполнения приведенного выше сценария PowerShell будет создан отчет, включающий имя контроллера домена и сообщение для каждого контроллера домена, как показано на снимке экрана ниже:

Как вы можете видеть на снимке экрана выше, он сообщил, что контроллер домена DC2.TechGenix.com, DC3.TechGenix.com и DC5.TechGenix.com требует перезагрузки, поскольку эти контроллеры домена не перезагружались более 60 дней.

Хотя существует множество доступных сценариев, которые могут сообщать о времени безотказной работы контроллеров домена, AD Health Profiler, доступный на сайте www.Ossisto365.com, представляет собой надежный продукт для проверки времени безотказной работы контроллера домена, а также помогает выполнить полную проверку работоспособности нескольких лесов Active Directory. Приведенный выше сценарий PowerShell был получен из Active Directory Health Profiler. Вы можете выбрать время безотказной работы контроллера домена в окне Dynamic Packs и выполнить его, чтобы получить данные о времени безотказной работы, как показано на снимке экрана ниже:

Active Directory Health Profiler — это хорошо известный продукт, доступный в Ossisto 365, для выполнения полной проверки работоспособности нескольких лесов Active Directory.

Почему это повысит вашу безопасность

Мы предоставили два сценария PowerShell для проверки работоспособности контроллеров домена. Безусловно, необходимо проверить, были ли перезагружены контроллеры домена или нет, чтобы избежать каких-либо угроз безопасности, поскольку для исправления контроллера домена требуется перезагрузка.