如何在记录所有内容时删除与interntet的连接时启用和禁用网络连接?

时间:2015-08-18 06:41:11

标签: windows powershell batch-file

我正在尝试在Batch,Powershell(Win8.1)或Python(3.4)中创建一个脚本。如果互联网连接仍然存在,脚本将每15分钟左右循环测试一次。如果连接处于活动状态,则脚本将打印带时间戳的Pass并保存到日志文件中。如果互联网连接中断或丢失,则脚本将在记录时间和测试结果时禁用并重新启用网络适配器。我想我已经缩小了一个非常可靠的批处理文件。

我遇到的问题是当我运行带有管理员权限的脚本允许执行powershell命令时,日志文件不会更新。当我运行没有管理员权限的批处理文件时,日志文件会更新,但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 个答案:

答案 0 :(得分:2)

您正在使用相对路径,因此位置可能会有所不同。如果您正确地点击并使用"以管理员身份运行"它会将文件保存在c:\windows\system32\Server_Restarts.log中。使用日志文件的绝对路径或保存在与批处理文件相同的目录中,如下所示:

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