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