На этой неделе я наткнулся на интересную проблему. Во многих офисах или рабочих средах может потребоваться переопределить параметры сети для подключения к различным сетям. Например, некоторые люди берут свой ноутбук с собой и имеют статический IP-адрес, настроенный специально для этого компьютера. Однако, поскольку в рабочей сети обычно используется DHCP, для этого необходимо, чтобы пользователь продолжал изменять настройки сети между статическим IP-адресом или автоматическим DHCP-сервером в зависимости от того, где они находятся.
Более распространенная проблема — для инженеров или ИТ-специалистов, которым часто необходимо подключаться к устройствам или компьютерам в небольшой сети внутри здания. Чтобы подключиться к этой изолированной сети, вам нужно изменить настройки сети на статический IP. Позже при повторном подключении к корпоративной сети он снова возвращается к DHCP.
Я оказывался в этой ситуации достаточно часто и так устал от просмотра сетевой карты, открытия настроек IP и внесения этих изменений, что я решил, что пришло время собрать сценарий VB, который будет делать все это в одном или два клика. Если вы следовали моим статьям по программированию, то знаете, что я люблю сценарии VB. Однажды я использовал его, чтобы создать одержимый компьютер. , а также использовали для автоматизации Microsoft SyncToy о резервных копиях данных.
Эту задачу также можно выполнить с помощью сценария VB, и даже можно сделать его достаточно гибким, чтобы он мог принимать пользовательский ввод для статического IP-адреса. В этой статье я покажу вам, как это сделать, в трех разделах.
Создание сценария изменения настроек сети
Существует три основных задачи, которые необходимо выполнить с помощью сценария, чтобы создать это маленькое приложение для переключения сетевых настроек. Первый — использовать скрипт для создания статических настроек IP. Следующее — придумать скрипт для включения DHCP. Наконец, последнее — спросить пользователя, какую задачу он хочет выполнить, а затем использовать эту обратную связь для ее выполнения.
VB Script для установки статических настроек IP
Помните, что следующие скрипты должны быть сохранены в виде текстового файла с расширением .wsf для работы на ПК с Windows. Следующий скрипт изменит ваши сетевые настройки на статический IP с определенной маской подсети и шлюзом по умолчанию со всеми тремя жестко запрограммированными в скрипте.
Для всех примеров кода, перечисленных в этой статье, обязательно добавьте «<job> <script language =» VBScript »>» в начале и «</ script> </ job> в конце, иначе код не запустится ,
Вот скрипт статического изменения IP:
Вариант Явный При ошибке возобновить следующее 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") Установите objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Установите colNetAdapters = objWMIService.ExecQuery («Выбрать * из Win32_NetworkAdapterConfiguration, где IPEnabled = TRUE») Для каждого объекта objNetAdapter в colNetAdapters errEnableStatic = objNetAdapter.EnableStatic (arrIPAddress, arrSubnetMask) Если не errEnableStatic = 0, то WScript.Echo "Ошибка при назначении IP / подсети." End If errGateways = objNetAdapter.SetGateways (arrGateway) Если не errGateways = 0, тогда WScript.Echo "Ошибка назначения шлюза". End If следующий WScript.Quit
Этот сценарий использует службу Windows WMI в Windows для достижения цели изменения настроек. Вы видите три переменные фиксированного массива, загруженные с IP-адресами, и затем, где скрипт проверяет активную «активированную» сетевую карту. Затем он использует методы «EnableStatic» и «SetGateways» для внесения необходимых изменений. Когда я запускаю сценарий в моей домашней сети (где мне требуется DHCP), вы можете видеть, где сценарий успешно изменил настройки моего адаптера, и я потерял подключение к Интернету.
Доказав, что часть скрипта со статическим IP работает, пришло время написать скрипт, который установит для адаптера DHCP, чтобы он автоматически обнаруживал сетевой IP. Вот сценарий, который вы можете использовать для этого.
Вариант Явный При ошибке возобновить следующее Dim objWMIService Dim objNetAdapter Dim strComputer Тусклый strComputer = "." Установите objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Установите colNetAdapters = objWMIService.ExecQuery («Выбрать * из Win32_NetworkAdapterConfiguration, где IPEnabled = TRUE») Для каждого объекта objNetAdapter в colNetAdapters errEnable = objNetAdapter.EnableDHCP () следующий WScript.Quit
Как видите, этот скрипт намного проще. Он также использует WMI, но единственной требуемой функцией является «EnableDHCP». Это выполняется на текущем включенном сетевом адаптере. После сохранения и запуска этого сценария настройки моей карты адаптера изменились на DHCP, и мое интернет-соединение снова заработало.
Итак, теперь, когда у вас есть код для выполнения обоих важных действий, следующей частью этого трюка будет получение информации от пользователя, чтобы точно определить, какой статический IP-адрес ему нужен. Чтобы снова включить DHCP, вы можете потребовать от пользователя ввести слово «АВТО» для автоматического определения IP.
Вот как выглядит этот новый, полный скрипт, включающий два скрипта выше.
Вариант Явный При ошибке возобновить следующее 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 («Введите статический IP-адрес или AUTO») Если strInput = "AUTO", то strComputer = "." Установите objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Установите colNetAdapters = objWMIService.ExecQuery («Выбрать * из Win32_NetworkAdapterConfiguration, где IPEnabled = TRUE») Для каждого объекта objNetAdapter в colNetAdapters errEnable = objNetAdapter.EnableDHCP () Если не errEnable = 0, то WScript.Echo "Настройка DHCP Failed." errFailed = 1 End If следующий еще strComputer = "." arrIPAddress = Array (strInput) arrSubnetMask = Array ("255.255.255.0") arrGateway = Array ("192.168.1.1") Установите objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Установите colNetAdapters = objWMIService.ExecQuery («Выбрать * из Win32_NetworkAdapterConfiguration, где IPEnabled = TRUE») Для каждого объекта objNetAdapter в colNetAdapters errEnableStatic = objNetAdapter.EnableStatic (arrIPAddress, arrSubnetMask) Если не errEnableStatic = 0, то WScript.Echo "Ошибка при назначении IP / подсети." errFailed = 1 End If errGateways = objNetAdapter.SetGateways (arrGateway) Если не errGateways = 0, то WScript.Echo "Ошибка назначения шлюза". errFailed = 1 End If следующий End If Если errFailed = 0, то WScript.Echo "Настройки IP успешно изменены". End If WScript.Quit
Этот скрипт использует функцию InputBox для получения статического IP-адреса или команды «AUTO» от пользователя.
Если в поле введено что-то кроме «AUTO», это будет использоваться в качестве статической строки IP в разделе кода, который использует WMI для установки статических настроек IP для сетевого адаптера. Также есть проверка на «0», подтверждающая, что все прошло хорошо.
Проверив настройки моей сетевой карты после запуска скрипта, я подтвердил, что скрипт действительно изменил настройки статического IP-адреса.
Теперь, чтобы проверить скрипт AUTO. Ввод AUTO удовлетворяет первому условию в проверке оператора «IF» для AUTO. Это запускает альтернативный сценарий, который включает DHCP.
После этого я вошел в настройки адаптера и, конечно же, вернул ему значение «Получить IP-адрес автоматически».
Хотя это может быть достаточно простой задачей, чтобы зайти в настройки вашей сетевой карты и перейти на статический или DHCP, если вам придется делать это очень часто, это может стать настоящей болью. Вы можете сделать это из командной строки, используя «netsh», но опять же, вам нужно запомнить синтаксис команды.
Использование приведенного выше сценария позволяет вам создать быструю и простую утилиту, которую вы можете использовать в любое время для переключения настроек сети на лету.
Думаешь, ты мог бы попробовать этот скрипт Windows? Любые другие идеи, чтобы настроить его и сделать его еще лучше? Поделитесь своими мыслями и предложениями в разделе комментариев ниже.
Изображение предоставлено: двоичные коды через Shutterstock