Redémarrez automatiquement Windows8 si aucune activité sur Internet

J'ai un serveur de médias situé dans une partie très incommode de ma maison. Parfois, je devrai réinitialiser mon routeur ou il se réinitialisera. Le problème est que le PC perd de la connectivité pour une raison quelconque, et je suis obligé de marcher dehors, autour de la maison, dans le sous-sol, sur un tas de jouets, de poids et de boîtes, pour appuyer sur un bouton pour le redémarrer.

J'aimerais que cela se vérifie toutes les 5 à 10 minutes et redémarre automatiquement si il est impossible de faire un ping sur une adresse / IP donnée.

Des idées sur comment y parvenir?

Fichier par lot:

ping 192.168.1.1 IF ERRORLEVEL 1 SHUTDOWN -R -T 00 

Powershell:

 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 

N'importe lequel d'entre eux peut être programmé pour fonctionner comme une tâche à un intervalle qui vous convient – un si programmé pour fonctionner avec les «privilèges les plus élevés», sera capable de surmonter tous les problèmes possibles de l'UAC.

Gardez à l'esprit que cela vérifie uniquement la connectivité à votre routeur. Il est peut-être utile de remplacer l'adresse IP par un tel que http://www.google.com ou similaire. Faites-en quelque chose que vous connaissez les réponses (faites un ping manuel) et assurez-vous qu'il n'est pas un site douteux qui est vulnérable aux temps d'arrêt … vous ne voulez pas Votre PC redémarre pour rien

Voici un script PowerShell qui le fera. Il suffit de l'exécuter comme une tâche planifiée aussi souvent que vous le souhaitez. Il utilise Restart-Computer , vous devrez peut-être utiliser -force , selon les circonstances. Vérifiez le lien pour les options.

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

J'ai inclus une déclaration complète If / Else, mais vous pouvez le faire en une seule ligne. Le plein Si / Else vous donne la flexibilité de faire plus si nécessaire. Voici un liner:

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

Si vous ne pouvez pas faire de ping sur votre routeur lorsqu'il échoue, utilisez l'adresse de votre routeur dans le script. Ce serait la meilleure option. Vous pouvez tester un site Web comme yahoo.com. Le problème avec le test d'un site externe est que:

  1. L'adresse à distance doit accepter pings
  2. L'adresse distante pourrait être désactivée, ce qui rendrait la machine à redémarrer