私の家の非常に不便な場所にメディアサーバー(Windows 8)があります。ルーターをリセットする必要がある場合や、ルーター自体がリセットされる場合があります。問題は、PCが何らかの理由で接続を失ったことです。私は、ボタンを押して再起動するために、家の周り、地下室、おもちゃ、ウェイト、ボックスの束を越えて外に出ることを余儀なくされました。
5〜10分ごとに自分自身をチェックし、特定のアドレス/ IPにpingできない場合は自動再起動するようにしたいと思います。
これを達成する方法はありますか?
バッチファイル:
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は無料で再起動します
これを実行する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のようなウェブサイトをテストすることができます。外部サイトのテストに関する問題は次のとおりです。