How to disable/enable network card on windows for specific time?
Hôm nay có một vị phụ huynh than phiền rằng con anh ấy thức khuya quá.
Anh ấy nhờ giúp khóa mạng trên máy tính Windows cho laptop của con anh ấy theo giờ từ 00:00 đến 06:00 sáng.
Với yêu cầu : khóa mạng internet theo khung giờ, chúng ta có thể thực hiện dễ dàng mà không cần cài phần mềm gì cả.
TẠO CÁC ĐOẠN SCRIPTS CẦN THIẾT
1/ Mở Notepad
2/ Dán đoạn code PowerShell Script vào:
# Define the time range
$disableStartTime = [datetime]::Today.AddHours(0) # 00:00
$disableEndTime = [datetime]::Today.AddHours(22) # 06:00
# Get the current time
$currentTime = [datetime]::Now
# Get all network adapters
$adapters = Get-NetAdapter
foreach ($adapter in $adapters) {
if ($currentTime -ge $disableStartTime -and $currentTime -lt $disableEndTime) {
# Disable adapters if within the time range
if ($adapter.Status -eq 'Up') {
Disable-NetAdapter -Name $adapter.Name -Confirm:$false
}
} else {
# Enable adapters if outside the time range
if ($adapter.Status -eq 'Disabled') {
Enable-NetAdapter -Name $adapter.Name -Confirm:$false
}
}
}
3/ Lưu lại với tên là "ManageNetwork.ps1"
4/ Mở Notepad mới, dán đoạn code VBScript này vào:
Set objShell = CreateObject("WScript.Shell")
objShell.Run "powershell.exe -ExecutionPolicy Bypass -File ""C:\Path\To\Your\Script\ManageNetwork.ps1""", 0, False
Nhớ thay thế cái đoạn C:\Path\To\Your\Script\ManageNetwork.ps1 cho đúng với nơi lưu ManageNetwork.ps1
5/ Lưu đoạn VBScript trên lại với tên là "RunManageNetwork.vbs"
TẠO SCHEDULED TASK ĐỂ CHẠY VBScript
Mở Task Scheduler --> create Task
- General tab(*):
- Name: Manage Network Adapters
- Chọn Run with highest privileges.
- Triggers tab --> New
- Daily
- Repeat task every: 5 minutes
- Actions tab: --> New
- Set the action to "Start a program".
- Program/script: wscript.exe
- Add arguments (optional): C:\Path\To\Your\Script\RunManageNetwork.vbs
- Conditions tab: bỏ hết tất cả dấu check (nêu có)
- Settings tab:
- Check "Allow task to be run on demand".
Click "OK" để tạo Task.
Click chuột phải bào tên task vừa tạo, chọn Run để nó chạy là xong!
Tại sao phải cần thêm đoạn code VBScript?
Thật ra chỉ cần tạo Task Scheduler trực tiếp cho "ManageNetwork.ps1" là đủ rồi. Tuy nhiên, khi PowerShell chạy nó sẽ nhảy ra cửa sổ nên chúng ta dùng VBscript để chạy ẩn.