web-dev-qa-db-ja.com

インターネットに接続できない場合は、Windowsを自動的に再起動します

私の家の非常に不便な場所にメディアサーバー(Windows 8)があります。ルーターをリセットする必要がある場合や、ルーター自体がリセットされる場合があります。問題は、PCが何らかの理由で接続を失ったことです。私は、ボタンを押して再起動するために、家の周り、地下室、おもちゃ、ウェイト、ボックスの束を越えて外に出ることを余儀なくされました。

5〜10分ごとに自分自身をチェックし、特定のアドレス/ IPにpingできない場合は自動再起動するようにしたいと思います。

これを達成する方法はありますか?

1
mrpatg

バッチファイル:

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は無料で再起動します

4
Fazer87

これを実行するPowerShellスクリプトを次に示します。スケジュールされたタスクとして必要な頻度で実行するだけです。 Restart-Computer を使用しますが、状況によっては-forceを使用する必要がある場合があります。オプションについては、リンクを確認してください。

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

完全なIf/Elseステートメントを含めましたが、これは1行で実行できます。完全なIf/Elseを使用すると、必要に応じてさらに多くのことを実行できる柔軟性が得られます。これが1つのライナーです:

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

失敗したときにルーターにpingを実行できない場合は、スクリプトでルーターのアドレスを使用してください。それが最良の選択肢でしょう。あなたはyahoo.comのようなウェブサイトをテストすることができます。外部サイトのテストに関する問題は次のとおりです。

  1. リモートアドレスはpingを受け入れる必要があります
  2. リモートアドレスがダウンしている可能性があり、マシンが再起動します
0
Keltari