如果没有互联网连接,则自动重启 Windows

如果没有互联网连接,则自动重启 Windows

我家里有一个媒体服务器(Windows 8),位置非常不方便。有时我必须重置路由器,否则它会自动重置。问题是 PC 因某种原因失去连接,我不得不走到屋外,绕着房子,走进地下室,越过一堆玩具、重物和盒子,按下按钮重新启动它。

我希望它每 5-10 分钟检查一次,如果无法 ping 给定的地址/IP,则自动重新启动。

有什么想法可以实现这一点吗?

答案1

批处理文件:

ping 192.168.1.1
IF ERRORLEVEL 1 SHUTDOWN -R -T 00

电源外壳:

if (!(Test-Connection 192.168.1.1 -quiet)) {Restart-Computer -Force}

VBScript:

 If Reachable("192.168.1.1") Then
  WScript.Run("shutdown -r -t 00")
 End If

 Function Reachable(strComputer)
  Dim wmiQuery, objWMIService, objPing, objStatus
  wmiQuery = "Select * From Win32_PingStatus Where Address = '" & strComputer & "'"

  Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
  Set objPing = objWMIService.ExecQuery(wmiQuery)

  For Each objStatus in objPing
      If IsNull(objStatus.StatusCode) Or objStatus.Statuscode<>0 Then
          Reachable = False 'if computer is unreacable, return false
      Else
          Reachable = True 'if computer is reachable, return true
      End If
  Next
 End Function

可以将其中任何一项安排为以适合您的间隔运行的任务 - 如果安排以“最高权限”运行,那么将能够克服任何潜在的 UAC 问题。

请记住,这仅检查与路由器的连接。也许值得将 IP 替换为 www.google.com 或类似的 IP。将其设置为您知道会回复的内容(进行手动 ping),并确保它不是容易停机的可疑网站。您不希望您的 PC 无缘无故地重新启动

答案2

这是我对此的回答。我甚至找到了一种方法,使用 Windows 中的任务计划程序运行脚本,并在启动后延迟运行它。

批处理文件内容:

@Echo 关闭:重新启动

ping google.com 如果“%ERRORLEVEL%”==“1” SHUTDOWN -R -T 00

转到重新启动

在此处检查任务计划程序设置: https://www.youtube.com/watch?v=NAEfNHjyoLw

答案3

这是一个可以完成此操作的 PowerShell 脚本。只需将其作为计划任务按所需频率运行即可。它使用重启计算机,您可能需要-force根据具体情况使用。请查看链接以了解选项。

If (!(Test-Connection 192.168.20.199 -quiet)) {
    Write-Host "Not connected"
    Restart-Computer -Force
}
Else {
    Write-Host "Connected"
}

我添加了完整的 If/Else 语句,但您可以在一行中完成此操作。完整的 If/Else 可让您根据需要灵活地执行更多操作。以下是一行代码:

if (!(Test-Connection 192.168.20.199 -quiet)) {Restart-Computer}

如果路由器发生故障时无法 ping 通,请在脚本中使用路由器的地址。这是最好的选择。您可以测试像 yahoo.com 这样的网站。测试外部网站的问题在于:

  1. 远程地址必须接受 ping
  2. 远程地址可能已关闭,这将导致机器重新启动

相关内容