【发布时间】:2019-08-04 22:19:27
【问题描述】:
我的目标是远程检查一组计算机(详细列表),不仅要查看服务器是否已重新启动(通常是上次重新启动时),还要查看 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
}
【问题讨论】:
-
你试过什么?您的代码在哪里并向我们展示您遇到的错误。您可以使用一个简单的服务观察器,当它们运行时,它会向您发送警报、电子邮件或文本。
-
代码不多,因为我是通过 PowerShell 使用 WMI 来获取 Windows 服务的状态,这也导致没有错误。问题是找到一个在登录屏幕之前没有启动的服务。对于这个项目,我不能修改目标服务器,只能查询它。我已经用我用来检查服务的单行 PowerShell 代码更新了我的问题。
标签: windows powershell wmi