Скрипт для смены ip адреса windows 10

Я пользуюсь личным ноутбуком на работе и дома. Для доступа к сети мне приходится дважды в день менять сетевые настройки. Причем, как дома, так и в офисе есть при...

Я пользуюсь личным ноутбуком на работе и дома. Для доступа к сети мне приходится дважды в день менять сетевые настройки. Причем, как дома, так и в офисе есть привязка к MAC-адресу машины. Поэтому приходится также менять MAC в свойствах сетевой платы.
Чтобы как-то автоматизировать этот процесс, была запущена командная строка и поисковик. Подробности и готовый bat-файл под катом.

Вступление

Для смены IP в командной строке windows есть утилита netsh. Подробнее, что это такое и с чем её едят на wiki.
Для смены MAC-адреса я стандартных средств не нашел (если таковые есть — укажите, буду признателен). Поэтому я использовал программу Macshift. Скачать можно с официального сайта.

Занятия bat-аникой

Создаем файл network.bat с содержимым:
@echo off
set /p mesto="Выберите настройки (1 - дом, 2 - работа): "
echo Выбраны настройки - %mesto%

if %mesto% equ 2 goto rabota

:dom
set IFACE="local"
set IP=10.160.100.9
set MASK=255.255.255.0
set GATEWAY=10.160.100.1
set GWMETRIC=1
set DNS1=10.160.100.1
set MAC=001122334455
goto smena

:rabota
set IFACE="local"
set IP=192.168.1.91
set MASK=255.255.255.0
set GATEWAY=192.168.1.1
set GWMETRIC=1
set DNS1=192.168.1.10
set MAC=221133004455
goto smena

:smena
echo Меняем MAC адрес на %MAC%
echo _____
macshift -i "local" %MAC%

echo _____
echo Устанавливаем IP адрес-%IP%
echo Маску подсети-%MASK%
echo Основной Шлюз-%GATEWAY%

netsh interface ip set address name=%IFACE% source=static addr=%IP% mask=%MASK% gateway=%GATEWAY% gwmetric=%GWMETRIC%

echo Устанавливаем основной DNS сервер %DNS1%
netsh interface ip set dns name=%IFACE% source=static addr=%DNS1% register=PRIMARY

echo Настройки сети изменены:
ipconfig /all
echo _____
pause

Обратите внимание на начало файла, после меток dom и rabota вводим свои настройки.
Примечание: «echo _____» использовано исключительно из эстетических начинаний.

Последние приготовления

Программу macshift и батник я разместил в d:programnetwork. А на рабочий стол вынес ярлычок network.lnk. При запуске ярлыка командный файл начинает работу с вопроса о выборе настроек. Нажав «1», получаем настройки для дома, соответственно, «2» — для офиса.
Может быть кому-то данный топик окажется полезным.


Windows, Windows 10, Windows 7, Windows 8, Windows Server, Windows Vista, Windows XP

  • 04.03.2020
  • 41 382
  • 4
  • 28.03.2021
  • 61
  • 60
  • 1

Как изменить IP адрес компьютера из командной строки или bat-файла

  • Содержание статьи
    • Описание
    • Комментарии к статье ( 4 шт )
    • Добавить комментарий

В процессе работы в ОС семейства Windows иногда бывает необходимо изменить IP адрес компьютера не через графический интерфейс, а с помощью пакетного файла (bat) или же с помощью командной строки (cmd). В данной статье мы расскажем о том, как это можно сделать.

Описание

Смена IP адреса компьютера осуществляется с помощью утилиты netsh, которая входит в состав Windows начиная с самых старых версий этой ОС. Чтобы правильно сменить IP адрес, сначала надо выяснить текущую конфигурацию. Сделать это можно в командной строке при помощи команды

netsh interface ip show address


Результат работы этой команды — отображение текущей конфигурации всех сетевых интерфейсов, настроенных в ОС. Из всех, нам необходимо найти и запомнить название того интерфейса, для которого мы хотим поменять адрес. В нашем примере видно, что интерфейс называется Ethernet. Текущий IP адрес 192.168.100.136, маска подсети 255.255.255.0, а основной шлюз 192.168.100.1.
Предположим, что нужно сменить наш IP адрес на 192.168.100.10, адресация в сети статическая, без использования DHCP, шлюз остается прежним 192.168.100.1, маска тоже не меняется 255.255.255.0

В этом случае, команда, которая должна быть выполнена из пакетного файла или командой строки принимает следующий вид:

netsh interface ip set address name="Ethernet" static 192.168.100.10 255.255.255.0 192.168.100.1 1

После выполнения этой команды у интерфейса Ethernet сменится IP адрес на 192.168.100.10, как на скриншоте ниже.

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

Также вы можете столкнуться со следующей ошибкой: «Для запрошенной операции требуется повышение прав (запустите с правами администратора)«. Как видно из текста ошибки, необходимо запустить командную строку (или bat-файл) с правами администратора, как это сделать на разных версиях Windows, можно прочитать в этой статье.

Команда netsh предоставляет широкие возможности по управлению сетевыми настройками из командной строки. Для ознакомления с другими ее функциональными возможностями пользуйтесь справкой при помощи netsh /?

  • Remove From My Forums
  • Вопрос

  • Задача:

    Сменить ip (статические) у все клиентов в связи со сменой сети.

    Например, текущая сеть 192.168.1/24. Требуется сменить на 192.168.2/24

    без использования DHCP.

    Решение :

    1) Хочу всем хостам в групповых политиках прописать скрипт который бы сменил текущий ip на новый (то есть  192.168.1.x на 192.168.2.x).

    2) Написать скрипт который будучи запущен на одной машине соеденяется последовательно со всеми хостами подсети и меняет ип адрес.

    Нашел скрипты близкие ко 2-му варианту, но не совсем то 

    Буду весьма признателен за помощь.

    Спасибо.

Ответы

  • Вот пример смены адреса WMI скриптом из соотв. раздела Script Repository.
    В принципе доработать его для того чтобы перебрать список раб. станций на которых его надо запустить и установить соотв. адрес (в цикле ли, из файла ли или еще как) не так уж и сложно (можно поискать там же).

    Code Snippet

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")

    Set colNetAdapters = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

    strIPAddress = Array("192.168.1.141")
    strSubnetMask = Array("255.255.255.0")
    strGateway = Array("192.168.1.100")
    strGatewayMetric = Array(1)

    For Each objNetAdapter in colNetAdapters
    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
    If errEnable = 0 Then
    WScript.Echo "The IP address has been changed."
    Else
    WScript.Echo "The IP address could not be changed."
    End If
    Next

You can use the Python WMI module to do this (install the PyWin32 extensions and the WMI module before running these scripts). Here is how to configure things to talk to the hardware device:

import wmi

# Obtain network adaptors configurations
nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)

# First network adaptor
nic = nic_configs[0]

# IP address, subnetmask and gateway values should be unicode objects
ip = u'192.168.0.11'
subnetmask = u'255.255.255.0'
gateway = u'192.168.0.1'

# Set IP address, subnetmask and default gateway
# Note: EnableStatic() and SetGateways() methods require *lists* of values to be passed
nic.EnableStatic(IPAddress=[ip],SubnetMask=[subnetmask])
nic.SetGateways(DefaultIPGateway=[gateway])

Here is how to revert to obtaining an IP address automatically (via DHCP):

import wmi

# Obtain network adaptors configurations
nic_configs = wmi.WMI().Win32_NetworkAdapterConfiguration(IPEnabled=True)

# First network adaptor
nic = nic_configs[0]

# Enable DHCP
nic.EnableDHCP()

Note: in a production script you should check the values returned by EnableStatic(), SetGateways() and EnableDHCP(). (‘0’ means success, ‘1’ means reboot required and other values are described on the MSDN pages linked to by the method names. Note: for EnableStatic() and SetGateways(), the error codes are returned as lists).

Full information on all the functionality of the Win32NetworkAdapterConfiguration class can also be found on MSDN.

Note: I tested this with Python 2.7, but as PyWIn32 and WMI modules are available for Python 3, I believe you should be able to get this working for Python 3 by removing the «u» from before the string literals.

ipconfig /renew to get a new IP address or default gateway
The NETSH command does this. check this.

See this example for setting DNS address manually via netsh command:

netsh interface ip set dns "Local Area Connection" static 192.168.0.200

configure your NIC to dynamically obtain its DNS settings (* Obtain DNS server address automatically):

netsh interface ip set dns "Local Area Connection" dhcp

and to set the * Obtain an IP address automatically setting:

netsh interface ip set address "Local Area Connection" dhcp

More info: read this Configure TCP/IP from the Command Prompt and How to change IP address from command prompt.

This is assuming 3 things.

1) The network adapter you’re trying to change the IP for is «local area connection». It could also be «local area connection 2» or «wireless network connection». Look in your control panel for the correct name.

2) The IP you want to set is 192.168.0.101, change this to whatever IP to want to use.

3) The default gateway and dns are the same IP. If you are using some kind of router they usually are. Change this to match your network config found with the command ipconfig /all


Here is example of batch file that I have created for your problem solutions: just change the command after the con1: type labels

How to create batch file:
paste this code in notepad and save it as "test.bat"

Note: Change your connection names "local area connection" to your "wireless connection" name

@ECHO off
cls
:start
ECHO.
ECHO 1. Change Connection1 Static IP 
ECHO 2. Change Connection2 Static IP 
ECHO 3. Change Connection3 Static IP 
ECHO 4. Obtain an IP address automatically
ECHO 5. Exit
set choice=
set /p choice=Type the number to print text.
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' goto con1
if '%choice%'=='2' goto con2
if '%choice%'=='3' goto con3
if '%choice%'=='4' goto autosearch
if '%choice%'=='5' goto end
ECHO "%choice%" is not valid, try again
ECHO.
goto start
:con1
ECHO Connecting Connection 1
netsh interface ip set address "Local Area Connection" static 192.168.0.10 255.255.255.0 192.168.0.1 1
goto end

:con2
ECHO Connecting Connection 2
netsh interface ip set address "Local Area Connection1" static 192.168.0.10 255.255.255.0 192.168.0.1 1
goto end

:con3
ECHO Connecting Connection 3
netsh interface ip set address "Local Area Connection2" static 192.168.0.10 255.255.255.0 192.168.0.1 1
goto end

:autosearch
ECHO obtaining auto IP
ipconfig /renew "Local Area Connection"
goto end

:bye
ECHO BYE
goto end

:end

Hope this help you..
for more reference check this Set Your IP Address Via Batch File

Как изменить IP адрес компьютера из командной строки или bat-файла

Как изменить IP адрес компьютера из командной строки или bat-файла

В процессе работы в ОС семейства Windows иногда бывает необходимо изменить IP адрес компьютера не через графический интерфейс, а с помощью пакетного файла (bat) или же с помощью командной строки (cmd). В данной статье мы расскажем о том, как это можно сделать.

Описание

Смена IP адреса компьютера осуществляется с помощью утилиты netsh, которая входит в состав Windows начиная с самых старых версий этой ОС. Чтобы правильно сменить IP адрес, сначала надо выяснить текущую конфигурацию. Сделать это можно в командной строке при помощи команды


Результат работы этой команды — отображение текущей конфигурации всех сетевых интерфейсов, настроенных в ОС. Из всех, нам необходимо найти и запомнить название того интерфейса, для которого мы хотим поменять адрес. В нашем примере видно, что интерфейс называется Ethernet. Текущий IP адрес 192.168.100.136 , маска подсети 255.255.255.0 , а основной шлюз 192.168.100.1 .
Предположим, что нужно сменить наш IP адрес на 192.168.100.10 , адресация в сети статическая, без использования DHCP, шлюз остается прежним 192.168.100.1, маска тоже не меняется 255.255.255.0

В этом случае, команда, которая должна быть выполнена из пакетного файла или командой строки принимает следующий вид:

После выполнения этой команды у интерфейса Ethernet сменится IP адрес на 192.168.100.10 , как на скриншоте ниже.

Команда netsh предоставляет широкие возможности по управлению сетевыми настройками из командной строки. Для ознакомления с другими ее функциональными возможностями пользуйтесь справкой при помощи netsh /?

Для того, чтобы освободить или обновить IP-адрес сетевого интерфейса через DHCP на вашем компьютере, используйте команды «ipconfig /release» (освобождение адреса IPv4 для указанного адаптера) и «ipconfig /renew» (обновление адреса IPv4 для указанного адаптера) в командной строке.

Через поиск по запросу «CMD» находим командную строку:

Далее в зависимости от ситуации вводим параметр и нажимаем «Enter»:

Для проверки смены IP-адреса можно использовать команду «ipconfig /all», которая покажет нам следующее:

Как изменить IP-адрес компьютера через «Параметры сети и Интернет»

1. Щелкаем правой кнопкой мыши по иконке сетевого подключения в трее, во всплывающем меню выбираем пункт «Открыть Параметры сети и Интернет»:

2. Щелкаем по пункту «Настройка параметров адаптера»:

3. Выбираем сетевой адаптер (Подключение по локальной сети, Беспроводная сеть или любой другой, который требует настройки). Щелкаем правой кнопкой мыши по сетевому адаптеру и выбираем «Свойства» в появившемся меню:

4. Во вкладке «Сеть» выбираем «IP версии 4 (TCP/IPv4)», щелкаем кнопку «Свойства»:

5. В окне «Свойства: IP версии 4 (TCP/IPv4)», выбираем пункт «Использовать следующий IP-адрес», поля «IP-адрес», «Маска сети», «Основной шлюз» и DNS-адреса станут доступными для заполнения:

6. Все эти параметры заполняются в зависимости от настроек вашего роутера или управляемого сетевого оборудования.

После заполнения параметров нажимаем «ОК», после идентификации сети (обычно занимает несколько секунд), сетевой интерфейс применит новый IP-адрес.

Изменить IP-адрес через маршрутизатор

Если ваш маршрутизатор удерживает или резервирует IP-адрес, необходимо внести изменения на маршрутизаторе. Для каждой марки и модели маршрутизатора меню с настройками отличается.

Меню будет выглядеть примерно следующем образом:

Изменить IP-адрес на Android

Так же как и на ПК имеется возможность смены IP-адреса и на ОС Android.

Для этого отдергиваем «шторку», кликаем на настройки — шестеренка в правом верхнем углу. Находим «Wi-Fi» или интерфейс, в котором необходимо сменить IP, кликаем по сети для перехода в свойства сети:

Находим пункт «Настройки IP», выбираем «Пользовательские настройки», меняем IP-адрес в поле «IP-адрес»:

Настройка сети через командную строку и BAT файл.

В данной статье будут рассмотрены варианты настройки и смены сетевых реквизитов подключения по локальной сети через командную строку (CMD) и BAT файл.

Вариант № 1:

Смена сетевых настроек через командную строку. Нажимаем «Пуск» — «Выполнить» или же нажимаем сочетание клавиш Win + R. Откроется окно «Выполнить». В строчке вводим «cmd» (без кавычек) и жмем кнопку «ОК». Откроется окно cmd.exe. Вводим команды:

Команда на смену IP адреса, маски подсети, шлюза по умолчанию и метрики интерфейса. «Подключение по локальной сети» меняем на название своего сетевого подключения. 192.168.0.100 — IP адрес, 255.255.255.0 — маска подсети, 192.168.0.1 — шлюз, единичка (1) следующая за шлюзом (192.168.0.1) это метрика интерфейса.

CMD

Копировать код

Команда на смену DNS серверов. Первая строчка кода меняет/прописывает предпочитаемый DNS сервер, а вторая строчка кода меняет/прописывает альтернативный DNS сервер.

CMD

Копировать код

Вариант № 2:

Смена сетевых настроек через BAT файл. Создаем текстовый документ, открываем его, жмем кнопку «Файл», выбираем пункт «Сохранить как». Откроется окно сохранения файла. В меню «Тип файла» выбираем пункт «Все файлы» (по умолчанию будет стоять «Текстовый документ»), выбираем кодировку ANSI (если изменено на другое). Далее к названию файла дописываем «.bat», таким образом у вас должно получиться примерно такое название файла: «Текстовый документ.bat». Жмем кнопку «Сохранить». Далее можно изменить название файла на свое. Теперь жмем правой кнопкой мыши на bat файле и в меню выбираем пункт «Изменить». Вводим в окно следующие команды:

BATCH

Копировать код

Команда «chcp 1251» устанавливает кодировку. Если этого не сделать, то через BAT файл нельзя будет сменить настройки на сетевом интерфейсе с названием, состоящим из русских символов.

Пример BAT файла:

Внимание! По умолчанию в командной строке используется точечный шрифт. В связи с этим вместо кирилицы будут отображаться «кракоязбры». Для того, чтобы русский текст отображался правильно, нужно сделать сделующее: в открытом окне командной строки нажмите правой кнопкой мыши на заголовке окна. Откроется меню — в нем выберите пункт «Свойства». В открывшемся окне перейдите на вкладку «Шрифты» и выберите шрифт Lucida Console. Нажмите кнопку «ОК». Всё, теперь шрифты в командной строке будут отображаться нормально.

При запуске данного пакетного файла вам будет предложено выбрать один из двух вариантов настройки — дом или работа. В примере кода меняем название сетевого подключения на своё, если оно отличное от по умолчанию, т.е. «Подключение по локальной сети». Так же меням сетевые настройки — IP, маску, шлюз и DNS сервера. После смены сетевых настроек будет предложено посмотреть текущие сетевые настройки (команда ipconfig /all). Отвечаем да или нет в зависимости от того нужно вам это или нет.

BATCH

Копировать код

March 31 2010, 13:02

Category:

  • IT
  • Cancel

У вас есть один ноутбук и вы сидете в нём дома, на работе, в институте?
Многие сталкивались с тем, что интернет(Wi-Fi или LAN) дома работает с одними настройками IP, DNS и тд., а на работе с другими? Бывало что вы перенастраивали каждый раз интернет? Лень?
Есть вариант решения: создать скрипт, позволяющий подставлять нужные Вам настройки через командную строку. Итак, суть:

1.Открываем выши подключения интернет(для Win7: Пуск -> Панель управления  -> Центр управления сетями и общим доступом -> Изменение параметров адаптера)
2. Переименовываем нужное Вам подключение английскими буквами и без пробелов. Например «Подключение по локальной сети» в «lan»
3. Создаём файл с любым именем, например: home.bat
4. открываем его блокнотиком и вписываем скрипт:

netsh interface ip set dnsservers name=»lan» source=static address=<ДНС сервер>
netsh interface ip set address name=»lan» source=static addr=<IP адресс> mask=<Маска подсети> gateway=<шлюз> gwmetric=1

Пояснения

:
name=»lan» здесь вместо lan пишем то имя, которое указали в пункте 2
<IP адресс> заменяем на нужный Вам IP-адресс, например 192.168.1.23
<Маска подсети> заменяем на нужную Вам маску, например 255.255.255.0
<шлюз> заменяем на нужный Вам шлюз, например 192.168.1.1

Итого получаем:

netsh interface ip set dnsservers name=»lan» source=static address=195.121.111.111
netsh interface ip set address name=»lan» source=static addr=192.168.1.23 mask=255.255.255.0 gateway=192.168.1.1 gwmetric=1

Его и записываем в наш bat файл. Теперь мы можем легко запускать разные такие файлы для каждого места(дом, работа и тд), а не каждый раз править ручками.

ВАЖНО:: В Windows 7 могут возникнуть проблемы с правами. Решение: правой кнопкой на bat файле. Выбираем: «Запуск от имени администратора»

Зачем спросите Вы менять постоянно менять ip с одного на другой в системе Windows, поставил роутер, он сам выдал тебе адрес и не нужно заморачиваться с непонятными масками, шлюзами, подсетями и прочим, работает да и ладно 🙂

  • Это пригодится сисадминам, которым приходится при перенастройке роутера, модема или другого сетевого устройства менять свой ip для настройки.
  • Это пригодится пользователям, которые работают на государственном предприятии, доступ к интернету закрыт 🙁 и раздается системными администраторами по ip. Можно подсмотреть у коллег ip, когда их нет пользоваться просторами информации.
  • Если вирусами или средствами групповой политики запрещен доступ к настройкам сети, но использовать командную строку можно.
  •  Или Вы хакер 🙂

Использовать будем команду netsh. Для использования ее, необходимо знать имя подключения, обычно оно соответствует «Подключение по локальной сети», можно узнать наведя мышкой на значок подключения в трее.

Меняем ip:

netsh interface ip set address name="Подключение по локальной сети" static 15.71.49.226 255.255.255.0 15.71.49.1 1

Меняем dns:

netsh interface ip set dns "Подключение по локальной сети" static 15.7.100.4

Коллега по работе, в то время изучал скрипты, в частности autoit, интересный и простой язык для разных мелких задач, я предложил написать утилиту, которая бы хранила все нужные ip и имела возможность устанавливать ip на любую сетевую карту в системе одним кликом, вообщем спасибо Андрею Челпаченко @Joker за данную утилиту, она мне очень помогала в настройке оборудования. Большой плюс, она графическая и портативная, что позволяет носить ее на флешке 🙂

IP-Changer Настройки редактируются через ini файл, а запускать нужно от имени Администратора.


На этой неделе я наткнулся на интересную проблему. Во многих офисах или рабочих средах может потребоваться переопределить параметры сети для подключения к различным сетям. Например, некоторые люди берут свой ноутбук с собой и имеют статический 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), вы можете видеть, где сценарий успешно изменил настройки моего адаптера, и я потерял подключение к Интернету.
Как написать скрипт Windows для изменения настроек сети на лету autodhcp1
Доказав, что часть скрипта со статическим 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» от пользователя.
change network settings script

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

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

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

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

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

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

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

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

This week, I stumbled across an interesting problem. In many offices or work environments, you might need to redefine your network settings to connect to different networks. For example, some people take their laptop home with them and have a static IP set up specifically for that machine. However, since the work network is usually DHCP, that requires the person to keep changing the network settings between a static IP or automatic DHCP depending where they are.

A more common problem is for engineers or IT staff that often need to connect to devices or machines on a small network within a building. To connect to that isolated network, you have to change your network settings to a static IP. Later, when you reconnect to the corporate network, it’s back to DHCP again.

I found myself in this situation often enough, and got so tired of browsing to the network card, opening up the IP settings and making those edits, that I decided it was high time to put together a VB script that would do it all in one or two clicks.  If you’ve followed along with my programming articles, then you know that I love VB scripts. I once used it to create a possessed computer, and also used to to automate Microsoft SyncToy for data backups.

It’s also possible to accomplish this task with VB script, and it’s even possible to make it flexible enough so that it can accept user input for the static IP address. In this article, I’ll show you how to do it in three sections.

Creating a Network Setting Change Script

There are three main tasks you need to accomplish with the script in order to create this little app for switching network settings. The first is to use the script to create static IP settings. The next is to come up with a script to enable DHCP. Finally, the last is to ask the user which task they want to do, and then use that feedback to accomplish it.

VB Script to Set Static IP Settings

Remember, the following scripts need to be saved as a text file with a .wsf extension in order to work on a Windows PC. The following script will change your network settings to a static IP with a specific subnet mask and default gatewall, with all three hard coded into the script.

For all code samples listed in this article, make sure to add «<job><script language=»VBScript»>» at the beginning and «</script></job> at the end, otherwise the code won’t run.

Here’s the static IP change script:

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 & "rootcimv2")

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

This script uses the Windows WMI service in Windows to accomplish the goal of changing settings. You can see the three fixed array variables loaded with the IP addresses, and then where the script checks for the active «enabled» network card. Then it uses the «EnableStatic» and «SetGateways» methods to make those required changes. When I run the script on my home network (where I require DHCP), you can see where the script successfully changed my adapter settings, and I’ve lost my Internet connection.

Having proved that the static-IP part of the script works, it’s time to write the script that will set the adapter to DHCP so it’ll automatically detect the network IP. Here’s the script that you can use to do that.

Option Explicit

On Error Resume Next

Dim objWMIService

Dim objNetAdapter

Dim strComputer

Dim errEnable

strComputer = "."

Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")

Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each objNetAdapter in colNetAdapters

errEnable = objNetAdapter.EnableDHCP()

Next

WScript.Quit

As you can see, this script is a lot simpler. It also uses WMI, but the only function required is «EnableDHCP». This is performed on the currently enabled network adapter. After saving and running this script, my adapter card settings changed back to DHCP, and my Internet connection was working again.

change network settings script

So, now that you’ve got the code to perform both of the important actions, the next part of this trick will be to take input from the user to determine exactly what static IP they want. To re-enable DHCP, you can require the user to enter the word «AUTO» for automatically detect the IP.

Here’s what this new, full script incorporating the two scripts above looks like.

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 & "rootcimv2")

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 & "rootcimv2")

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

This script uses the InputBox function to get either the static IP or the «AUTO» command from the user.

change network settings script

If anything other than «AUTO» is typed into the field, that will be used as the static IP string in the section of code that uses WMI to set the static IP settings for the network adapter. There’s also a check for the «0» confirmation saying everything went okay.

script to change network settings

Checking my network card settings after running the script, I confirmed that the script did in fact make the static IP setting changes.

script to change network settings

Now to test the AUTO script. Typing AUTO satisfies the first condition in the «IF» statement checking for AUTO. This runs the alternate script that enables DHCP.

script to change network settings

After running this, I went into my adapter settings and sure enough, it was set back to Obtain an IP address automatically.

script to change network

While it may be a simple enough task to go into your network card settings and change to static or DHCP, if you have to do it really often it can become a real pain. You could do it from a command line using «netsh», but again, you need to remember the command syntax.

Using the script above allows you to build a quick and easy utility that you can use anytime to switch your network settings on the fly.

Think you might give this Windows Script a try? Any other ideas to tweak it and make it even better? Share your thoughts and suggestions in the comments section below.

Image Credit:Binary Codes via Shutterstock

Понравилась статья? Поделить с друзьями:
  • Скорость указателя мыши windows 10 для игр
  • Скрипт для синхронизации времени в windows 10
  • Скрыть диск рекавери в windows 10
  • Скорость слайд шоу windows 10 фотографии
  • Скрипт для сброса центра обновления windows 10