Как написать скрипт Windows для изменения настроек сети на лету

изменить настройки сети скриптНа этой неделе я наткнулся на интересную проблему. Во многих офисах или рабочих средах может потребоваться переопределить параметры сети для подключения к различным сетям. Например, некоторые люди берут свои ноутбуки с собой и имеют статический IP-адрес, настроенный специально для этого компьютера. Однако, поскольку рабочая сеть обычно является DHCP, для этого требуется, чтобы человек продолжал изменять сетевые настройки между статическим IP или автоматическим DHCP в зависимости от того, где они находятся.

Более распространенная проблема — для инженеров или ИТ-специалистов, которым часто необходимо подключаться к устройствам или компьютерам в небольшой сети внутри здания. Чтобы подключиться к этой изолированной сети, вам нужно изменить настройки сети на статический IP. Позже, когда вы снова подключитесь к корпоративной сети, он снова вернется к DHCP.

Я оказывался в этой ситуации достаточно часто и так устал от просмотра сетевой карты, открытия настроек IP и внесения этих изменений, что я решил, что пришло время собрать сценарий VB, который будет делать все это в одном или два клика. Если вы следовали моим статьям по программированию, то знаете, что я люблю сценарии VB. Я однажды использовал его, чтобы создать одержимый компьютер

, а также используется для автоматизации Microsoft SyncToy

для резервного копирования данных.

Эту задачу также можно выполнить с помощью сценария VB, и даже можно сделать его достаточно гибким, чтобы он мог принимать пользовательский ввод для статического IP-адреса. В этой статье я покажу вам, как это сделать, в трех разделах.

Создание сценария изменения настроек сети

Есть три основных задачи, которые вам нужно выполнить с помощью скрипта, чтобы создать это маленькое приложение для переключения настроек сети. Первый — использовать скрипт для создания статических настроек IP. Следующее — придумать скрипт для включения DHCP. Наконец, последнее — спросить пользователя, какую задачу он хочет выполнить, а затем использовать эту обратную связь для ее выполнения.

VB Script для установки статических настроек IP

Помните, что следующие скрипты должны быть сохранены в виде текстового файла с расширением .wsf для работы на ПК с Windows. Следующий скрипт изменит ваши сетевые настройки на статический IP с определенной маской подсети и шлюзом по умолчанию со всеми тремя жестко запрограммированными в скрипте.

Для всех примеров кода, перечисленных в этой статье, обязательно добавьте «» в начале и «в конце», иначе код не запустится.
Вот скрипт статического изменения IP:

Option Explicit
On Error Resume Next
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim arrIPAddress
Dim arrSubnetMask
Dim arrGateway
Dim colNetAdapters
Dim errEnableStatic
Dim errGateways
strComputer = "."
arrIPAddress = Array("192.168.1.106")
arrSubnetMask = Array("255.255.255.0")
arrGateway = Array("192.168.1.1")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter in colNetAdapters
errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask)
If Not errEnableStatic = 0 Then
WScript.Echo "Failure assigning IP/Subnet."
End If
errGateways = objNetAdapter.SetGateways(arrGateway)
If Not errGateways = 0 Then
WScript.Echo "Failure assigning Gateway."
End If
Next
WScript.Quit

Этот сценарий использует службу Windows WMI в Windows для достижения цели изменения настроек. Вы можете видеть три фиксированные переменные массива, загруженные с IP-адресами, и затем, где скрипт проверяет активную «активированную» сетевую карту. Затем он использует методы «EnableStatic» и «SetGateways» для внесения необходимых изменений. Когда я запускаю сценарий в моей домашней сети (где мне требуется DHCP), вы можете видеть, где сценарий успешно изменил настройки моего адаптера, и я потерял подключение к Интернету.
Как написать скрипт Windows для изменения настроек сети на лету autodhcp1
Доказав, что часть сценария со статическим IP-адресом работает, пришло время написать сценарий, который установит для адаптера DHCP, чтобы он автоматически определял сетевой IP-адрес. Вот сценарий, который вы можете использовать для этого.

Option Explicit
On Error Resume Next
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim errEnable
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableDHCP()
Next
WScript.Quit

Как видите, этот скрипт намного проще. Он также использует WMI, но единственной требуемой функцией является «EnableDHCP». Это выполняется на текущем включенном сетевом адаптере. После сохранения и запуска этого сценария настройки моей карты адаптера изменились на DHCP, и мое интернет-соединение снова заработало.
изменить настройки сети скрипт
Итак, теперь, когда у вас есть код для выполнения обоих важных действий, следующей частью этого трюка будет получение информации от пользователя, чтобы точно определить, какой статический IP-адрес ему нужен. Чтобы снова включить DHCP, вы можете потребовать от пользователя ввести слово «АВТО» для автоматического определения IP.
Вот как выглядит этот новый, полный скрипт, включающий два скрипта выше.

Option Explicit
On Error Resume Next
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim arrIPAddress
Dim arrSubnetMask
Dim arrGateway
Dim colNetAdapters
Dim errEnableStatic
Dim errGateways
Dim strInput
Dim errFailed
errFailed = 0
strInput = InputBox("Type Static IP Address or AUTO")
If strInput = "AUTO" Then
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableDHCP()
If Not errEnable = 0 Then
WScript.Echo "Setting DHCP Failed."
errFailed = 1
End If
Next
Else
strComputer = "."
arrIPAddress = Array(strInput)
arrSubnetMask = Array("255.255.255.0")
arrGateway = Array("192.168.1.1")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter in colNetAdapters
errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask)
If Not errEnableStatic = 0 Then
WScript.Echo "Failure assigning IP/Subnet."
errFailed = 1
End If
errGateways = objNetAdapter.SetGateways(arrGateway)
If Not errGateways = 0 Then
WScript.Echo "Failure assigning Gateway."
errFailed = 1
End If
Next
End If
If errFailed = 0 Then
WScript.Echo "IP Settings Successfully Modified."
End If
WScript.Quit

Этот скрипт использует функцию InputBox для получения статического IP-адреса или команды «AUTO» от пользователя.
изменить настройки сети скрипт

Если в поле введено что-либо кроме «AUTO», это будет использоваться в качестве статической строки IP в разделе кода, который использует WMI для установки статических настроек IP для сетевого адаптера. Также есть проверка на «0», подтверждающая, что все прошло хорошо.

скрипт для изменения настроек сети

Проверив настройки моей сетевой карты после запуска скрипта, я подтвердил, что скрипт действительно изменил настройки статического IP-адреса.
скрипт для изменения настроек сети
Теперь протестировать скрипт AUTO. Ввод AUTO удовлетворяет первому условию в проверке оператора «IF» для AUTO. Это запускает альтернативный скрипт, который включает DHCP.

скрипт для изменения настроек сети

После этого я вошел в настройки адаптера и, конечно же, вернул ему значение «Получить IP-адрес автоматически».
скрипт для изменения сети
Хотя это может быть достаточно простой задачей, чтобы зайти в настройки вашей сетевой карты и перейти на статический или DHCP, если вам придется делать это очень часто, это может стать настоящей болью. Вы можете сделать это из командной строки, используя «netsh», но опять же, вам нужно запомнить синтаксис команды.

Использование приведенного выше сценария позволяет вам создать быструю и простую утилиту, которую вы можете использовать в любое время для переключения сетевых настроек на лету.

Думаешь, ты мог бы попробовать этот скрипт Windows? Любые другие идеи, чтобы настроить его и сделать его еще лучше? Поделитесь своими мыслями и предложениями в разделе комментариев ниже.

Изображение предоставлено: двоичные коды через Shutterstock

Ссылка на основную публикацию
Adblock
detector