2015-08-18 30 views
1

我想創建一個批處理,Powershell(Win8.1)或Python(3.4)的腳本。腳本會每隔15分鐘循環一次,以測試互聯網連接是否還活着。如果連接處於活動狀態,那麼腳本將打印帶時間戳的Pass並保存到日誌文件中。如果互聯網連接失效或丟失,則腳本將禁用並重新啓用網絡適配器,同時記錄時間和測試結果。我想我已經縮小了一個非常穩定的批處理文件。如何啓用和禁用網絡連接時,連接到interntet被放棄,而一切都記錄?

我遇到的問題是,當我使用允許powershell命令執行的Admin權限運行腳本時,日誌文件不會更新。當我運行無Admin權限的批處理文件時,日誌文件會更新,但PowerShell命令不起作用。

我也曾嘗試用命令行代碼同樣的腳本到位的PowerShell命令的我只覺得PowerShell是速度快:

netsh interface set interface "Ethernet" DISABLED 
netsh interface set interface "Ethernet" ENABLED 

到目前爲止我的代碼:

@setlocal enableextensions enabledelayedexpansion 
@echo off 

rem Google DNS Most reliable IP for ping testing. 
set ip=8.8.8.8 

:retest 
cls 
echo. 
echo %TIME%: Testing Internet Connection... 

ping -n 1 %ip% | find "TTL" 
if not errorlevel 1 set error=Pass 
if errorlevel 1 set error=Fail 
echo. 
echo Time: %TIME% Result: %error% 
echo Time: %TIME% Result: %error% >> Server_Restarts.log 
echo. 
goto %error% 

:Pass 
echo Retest in 15 minutes.. 
timeout /T 900 /NOBREAK 
goto retest 

:Fail 
echo Restarting Network.. 
echo Connection Failed at %TIME%.. >> Server_Restarts.log 
timeout /t 5 /nobreak 
echo. >> Server_Restarts.log 
echo. 
echo Restarting Network at Date: %DATE% and Time:%TIME%.. 
echo Restarting Network at Date: %DATE% and Time:%TIME%.. >> Server_Restarts.log 
echo %TIME% Disabling Network Connection.. 
Powershell.exe Disable-NetAdapter -Name * -Confirm:$false 
echo %TIME% Enabling Network Connection.. 
Powershell.exe Enable-NetAdapter -Name "Ethernet" 
echo Network Connection Reset at %TIME%.. 
echo Network Connection Reset at Date: %DATE% and Time:%TIME%.. >> Server_Restarts.log 
echo. >> Server_Restarts.log 
timeout /t 5 /nobreak 
goto retest 
+1

你怎麼知道它不寫入你的文件?您正在使用相對路徑,因此位置可能會有所不同。如果你正確的點擊並使用「以管理員身份運行」,它會將文件保存在'c:\ windows \ system32 \ Server_Restarts.log'中。 –

+0

哦,不,你說得很對,現在我覺得很愚蠢。 :(我不知道爲什麼我沒有想到這一點,你是一個拯救生命的人。 – Haxslie

+0

:)添加爲答案 –

回答

2

你使用相對路徑,所以位置可能會不同。如果您點擊右鍵並使用「以管理員身份運行」,則會將該文件保存在c:\windows\system32\Server_Restarts.log中。使用絕對路徑作爲日誌文件或保存在與批處理文件相同的目錄中,如下所示:

Time:%TIME%.. >> "%~dp0Server_Restarts.log"