雖然目前很少使用者會讓作業系統直接去進行PPPoE連線,但小編還是遇到了這樣的需求,讓作業系統直接撥號連線的困擾就是ISP定期會強制斷線,使用者需要重新撥號連線,這個狀況在硬體設備上很好處理,通常都會有自動連線功能,但在作業系統上該如何處理呢?
1、新增一個PowerShell的腳本「pppoe-check.ps1」
該腳本會去測試ISP的DNS(這裡以中華電信為例),如果測試連線失敗代表以中斷連線,則進行重新撥號連線。
your_pppoe_username 請取代為PPPoE的撥號連線帳號
your_pppoe_password 請取代為PPPoE的撥號連線密碼
# 設定撥接連線資訊
$connectionName = "PPPoE"
$username = "your_pppoe_username"
$password = "your_pppoe_password"
# Ping 測試
$pingResult = Test-Connection -ComputerName 168.95.1.1 -Count 2 -Quiet
if (-not $pingResult) {
Write-Host "Ping 失敗,嘗試重新撥接 $connectionName..."
# 中斷連線
rasdial $connectionName /disconnect
Start-Sleep -Seconds 5
# 重新撥接
$redialResult = rasdial $connectionName $username $password
if ($LASTEXITCODE -eq 0) {
Write-Host "重新撥接成功。"
} else {
Write-Host "撥接失敗,請檢查帳號或密碼。"
}
} else {
Write-Host "Ping 成功,連線正常。"
}
1、新增BAT 批次檔
新增一個「run-pppoe.bat」來執行先前產生的「pppoe-check.ps1」,並可以將該BAT 批次檔設定成windows排程,每一分鐘執行一次。
@echo off PowerShell -NoProfile -ExecutionPolicy Bypass -File "%~dp0pppoe-check.ps1"
※注意事項:
(1)、「run-pppoe.bat」跟「pppoe-check.ps1」這兩個檔案必須放在同一個目錄。
(2)、「run-pppoe.bat」跟「pppoe-check.ps1」這兩個檔案,建議使用windows內建的文字編輯器產生,存檔時並使用「ANSI」編碼,避免執行時因為亂碼而無法順利執行指令。
(3)、若遭遇PowerShell 無法執行 .ps1,請執行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
