Моя цель состоит в том, чтобы удаленно проверить группу компьютеров (обширный список) не только для того, чтобы увидеть, перезагрузился ли сервер (обычно, когда он был в последний раз), но также, если Windows полностью запущена и работает на экране входа в систему, и не будет перезагружаться для дальнейших обновлений или все еще будет устанавливать обновления.
Я нашел сервис AppReadiness, который останавливал его до перезагрузки сервера. Я обеспокоен тем, что, если он установлен на ручной, он не всегда запускается. Может кто-нибудь подтвердить, если это надежный сервис?
РЕДАКТИРОВАТЬ: Когда я писал это, я обнаружил, что он был остановлен, пока не появится сообщение «Работа над обновлениями, 100% завершено, не выключайте компьютер», но когда сервер завис на этом сообщении, Запущен сервис AppReadiness. Есть ли что-нибудь лучше, чтобы посмотреть? Я прочитал другие ответы на разные вопросы, скажем, чтобы проверить, доступен ли C $, но он будет доступен раньше, чем AppReadiness.
Код, который используется для проверки услуги:
$creds = Get-Credential -Message "Enter server credentials:" -UserName "SERVERNAME\Administrator"
Get-WmiObject Win32_Service -ComputerName "SERVERIPADDRESS" -Credential $creds | Where-Object {$_.Name -eq "AppReadiness"}
РЕДАКТИРОВАТЬ 2: Кроме того, вместо служб мониторинга я также пытался искать такие процессы, как winlogon.exe и loginui.exe, для получения указаний о состоянии сервера, но я не получаю результаты, которые я хочу записать. Эти процессы показывают, когда сервер готовится, когда я надеялся, что они будут показаны только после того, как GUI входа в систему станет видимым.
РЕДАКТИРОВАТЬ 3:
Это изменение предназначено для ответа @ Kelv.Gonzales, который заявил, что проверяет запись в журнале событий Windows «Служба клиента DHCPv4 запущена». Это не работает и находится на одном уровне с другими службами и событиями, которые я отслеживал. Показывает действительный до входа в систему.
Мой код был:
$creds = Get-Credential -Message "Enter server credentials:" -UserName "SERVERNAME\Administrator"
$server = "IPADDRESSOFSERVER"
while($true)
{
$event = Get-WmiObject Win32_NTLogEvent -ComputerName $server -Credential $creds -Filter "(logfile='System' AND eventcode = '50036')" | select -First 1
$event.ConvertToDateTime($event.TimeWritten)
Start-Sleep -Seconds 5
}