Переключение сетевых настроек Windows: DHCP и статический IP
Зачем это нужно
В рабочих условиях и на объектах IT‑персонал часто подключается к разным локальным сетям: корпоративной сети с DHCP и изолированной подсети с фиксированными адресами. Ручная смена настроек в свойствах сетевого адаптера отнимает время и приводит к ошибкам. Автоматизация уменьшает риск опечаток, ускоряет переключение и упрощает распространение настроек среди коллег.
Краткое определение терминов:
DHCP — протокол автоматического получения IP‑адреса от сервера сети.
Статический IP — фиксированный адрес, задаваемый вручную в настройках адаптера.
Что будет в этой статье
Готовые VBScript‑скрипты: для установки статического IP, для включения DHCP и объединённый скрипт с вводом пользователя.
Пояснения по работе WMI и методам EnableStatic/SetGateways/EnableDHCP.
Инструкции по запуску, тестам и откату изменений.
Альтернативы: netsh, PowerShell, групповые политики (GPO).
Чек‑листы и пошаговый SOP для инженера и администратора.
Советы по безопасности и совместимости.
Быстрый план действий
Сохраните скрипт как текстовый файл с расширением .wsf.
Запустите с правами администратора (правый клик → Запуск от имени администратора).
Проверьте настройки адаптера в «Сетевых подключениях» или через ipconfig /all.
Если нужно вернуть всё назад — запустите скрипт для включения DHCP.
Important: перед массовым развёртыванием протестируйте на одной машине и подготовьте план отката.
VBScript для установки статического IP
Ниже — пример скрипта, который установит фиксированный IP, маску и шлюз. В примере значения хардкодятся в массивы. Для работы на Windows сохраните файл как my-static-ip.wsf и запускайте с правами администратора.
Добавляйте эти теги вокруг блока кода при сохранении как .wsf:
Описание ключевых частей:
- GetObject("winmgmts:\\\.\root\cimv2") — подключение к WMI на локальной машине.
- Запрос Win32_NetworkAdapterConfiguration where IPEnabled=TRUE выбирает включённые адаптеры.
- EnableStatic(arrIPAddress, arrSubnetMask) задаёт адрес и маску.
- SetGateways(arrGateway) задаёт шлюз по умолчанию.
Важно: если у машины несколько активных адаптеров, скрипт применит изменения ко всем. Если нужно выбрать конкретный адаптер, добавьте фильтр по Description или MAC‑адресу.

## VBScript для включения DHCP
Этот скрипт включит автоматическое получение адреса (DHCP) для активного адаптера. Сохраните как my-enable-dhcp.wsf.
Этот вариант проще: он вызывает только EnableDHCP на каждом включённом адаптере.

## Объединённый скрипт с вводом пользователя
Ниже — полный скрипт, который запрашивает у пользователя статический IP или слово AUTO (для возврата к DHCP). Сохраните как switch-ip.wsf и запустите с повышенными правами.

Пояснения и практические заметки:
- Скрипт принимает любую строку, отличную от "AUTO", как IP. Нет проверки корректности IPv4‑формата — её можно добавить.
- По умолчанию маска и шлюз заданы жёстко; их тоже можно запросить у пользователя либо подставлять по профилям.
- После применения статического IP вы можете потерять доступ в интернет, если не задали корректный шлюз и DNS.

## Проверка и тесты
После выполнения любого скрипта выполните эти шаги:
- Выполните ipconfig /all и убедитесь, что адрес и маска применились.
- Проверьте маршрут по умолчанию: route print | findstr 0.0.0.0
- Пропингуйте шлюз: ping
- Попробуйте открыть сайт и проверить разрешение имён: nslookup example.com
Критерии приёмки
- Статический режим: заданный IP и маска отображаются в ipconfig /all; шлюз добавлен; веб‑доступ соответствует ожиданию (если шлюз и DNS корректны).
- Режим AUTO: адрес и настройки от DHCP — ipconfig /all показывает получение IP от DHCP‑сервера.
## Отладка и распространённые ошибки
- Скрипт не изменил настройки: убедитесь, что вы запустили .wsf с правами администратора.
- Изменения не видны: некоторые виртуальные адаптеры могут мешать — фильтруйте по Description или MAC.
- Скрипт применил настройки ко всем адаптерам — если нужен один, отфильтруйте результат WMI‑запроса.
- Ошибка при EnableStatic/SetGateways: WMI вернёт код ошибки; можно расширить логирование, чтобы вывести код.
Пример улучшения: проверка формата IP перед применением (псевдокод):
- проверить, что строка содержит 4 октета разделённых точками;
- каждый октет в диапазоне 0–255;
- исключить адреса 0.0.0.0 и 255.255.255.255.
## Альтернативы и когда их использовать
- netsh (командная строка): подходит для быстрых команд в сценариях ад‑хок. Пример:
- Установить статический IP: netsh interface ip set address "Ethernet" static 192.168.1.106 255.255.255.0 192.168.1.1
- Вернуть DHCP: netsh interface ip set address "Ethernet" dhcp
- PowerShell (рекомендуется для современных Windows): даёт лучшую структуру, удобство в скриптинге и обработке ошибок. Пример (PowerShell):
- Set‑NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.106 -PrefixLength 24 -DefaultGateway 192.168.1.1
- Set‑NetIPInterface -InterfaceAlias "Ethernet" -Dhcp Enabled
- Групповые политики (GPO): для массового управления на домене; не подходит для частых ручных переключений на персональных ноутбуках.
Когда VBScript может не подойти:
- Современные политики безопасности блокируют выполнение .wsf.
- Требуется централизованное логирование и аудит — лучше PowerShell + SIEM.
## Примеры расширений скрипта (идеи)
- Профили: в файле хранить несколько профилей (home, office, lab) с IP/маской/шлюзом/DNS и выбирать по имени.
- Проверка доступности шлюза и DNS после смены; автоматический откат при отсутствии связи.
- Логирование результатов в файл (с меткой времени) и вывод кода ошибки WMI.
- Инструмент GUI: маленькое окно с выпадающим списком профилей и кнопками Apply/Auto.
## Рекомендованный SOP для инженера
1. Подготовка: создать profile.json с именами профилей и параметрами.
2. Тест: применить профиль на тестовой машине и выполнить набор проверок (ipconfig, ping, nslookup).
3. Разворачивание: скопировать .wsf на рабочую станцию или подключить через RMM.
4. Откат: команда для возврата — switch-ip.wsf с AUTO или готовый скрипт для DHCP.
5. Документация: записать используемый профиль, дату, кто применял изменения.
Role‑based checklist
- Инженер: подготовить профиль, протестировать, задокументировать.
- Администратор: развёртывание через RMM/GPO при необходимости, контроль прав на запуск скрипта.
- Конечный пользователь: запустить скрипт по инструкции, уведомить инженера о проблемах.
## Безопасность и права доступа
- Запуск .wsf требует прав администратора; ограничьте доступ запуску скриптов неавторизованными пользователями.
- Не храните пароли/ключи в скриптах в открытом виде.
- Логируйте операции и проверяйте, кто и когда менял сетевые настройки (аудит событий Windows).
Privacy заметки: скрипты работают с локальными настройками; они не передают персональные данные куда‑либо по сети, если вы явно не добавите функцию отправки логов внешнему сервису.
## Совместимость и нюансы по версиям Windows
- VBScript и WMI доступны на большинстве Windows (7, 8.1, 10, 11, Windows Server).
- На новых окружениях PowerShell часто предпочтительнее.
- В средах с усиленными политиками исполнения (.wsf/WSH) может блокироваться запуск скриптов.
Совет по миграции: если у вас инфраструктура Windows Server/AD, рассмотрите перевод логики в PowerShell DSC или GPO для централизованного управления.
## Тестовые сценарии и критерии приёмки
1. Сценарий: Применение статического IP
- Ввод: профиль с IP 192.168.50.10
- Проверки: ipconfig /all показывает заданный IP; шлюз и маска корректны; есть доступ к ресурсам подсети.
- Критерии: 3 успешных ping до шлюза и до внутреннего ресурса.
2. Сценарий: Возврат в DHCP
- Ввод: AUTO
- Проверки: ipconfig /all показывает адрес от DHCP; доступ в интернет есть.
- Критерии: успешный запрос DNS и доступ к внешнему сайту.
## Решение проблем и план отката
Если после применения статического IP нет доступа:
1. Проверьте корректность введённого IP, маски и шлюза.
2. Подключитесь локально и запустите cmd: ipconfig /release && ipconfig /renew (если DHCP сервер ожидаем).
3. Если доступ по сети невозможен, вернитесь физически к компьютеру и запустите switch-ip.wsf с AUTO или вручную установите DHCP в GUI.
## Когда не использовать этот подход
- Если требуется централизованный аудит и контроль — лучше PowerShell с логированием и SIEM.
- Если пользователи не имеют административных прав и запрещено выполнение скриптов — используйте GPO.
## Заключение
VBScript‑вариант прост в реализации и полезен для быстрых задач: переключить сеть между статическим IP и DHCP за пару кликов. Для долгосрочного, централизованного и аудируемого решения стоит рассмотреть PowerShell и инструменты управления конфигурацией. Перед внедрением протестируйте скрипт на одном узле, добавьте проверку валидности IP и план отката.
Summary:
- Используйте приведённые скрипты как быстрый инструмент для переключения сетевых режимов.
- Добавьте в скрипт проверку формата IP и логирование для надёжности.
- Рассмотрите PowerShell для масштабируемых и безопасных решений.



Если хотите, я могу: предоставить вариант PowerShell с проверками, добавить поддержку профилей в JSON и подготовить инсталлятор для развёртывания в сети. Подскажите, какой из вариантов предпочитаете.