Netsh

From TÜ Narva Kolledži Wiki
Revision as of 13:02, 30 August 2022 by Pavel (talk | contribs) (Created page with " == Что такое Netsh? == '''Netsh''' - это мощная утилита командной строки, с помощью которой, можно локальн...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Что такое Netsh?

Netsh - это мощная утилита командной строки, с помощью которой, можно локально или удаленно просматривать, а также конфигурировать сетевые параметры компьютера. Так же с помощью Netsh можно создавать сценарии, которые, позволяют запускать последовательно группы команд, что в свою очередь очень сильно облегчает работу. Сценарии можно сохранять в текстовом файле и использовать для настройки других компьютеров или в целях архивации (на тот случай если сетевые параметры были испорчены). Работать с Netsh можно двумя способами в интерактивном или не интерактивном режиме. (В интерактивном режиме доступно больше команд) Для того что бы работать в интерактивном режиме нужно просто запустить netsh без параметров и тогда на экран выводится приглашение к вводу внутренних команд оболочки.

Набор команд представляет собой многоуровневую структуру, позволяющую выполнять необходимые действия в выбранном контексте.

При необходимости, можно выполнить нужное действие без использования интерактивного режима, указав в качестве параметров командной строки последовательный набор внутренних команд Netsh и необходимых параметров. Например: netsh interface ipv4 show config последовательно выполняется команда первого уровня interface, далее переходим на следующий уровень ipv4, и уже в этом контексте выполняется команда следующего уровня show с параметром config

Контексты в Netsh

Netsh взаимодействует с другими компонентами операционной системы с помощью файлов библиотеки динамической компоновки (DLL). Каждая библиотека модуля поддержки Netsh содержит широкий набор средств, или контекст, представляющий собой группу команд, относящуюся к конкретному сетевому компоненту. Эти контексты расширяют возможности netsh, обеспечивая возможность настройки и наблюдения за одной или несколькими службами, программами или протоколами. По сути имя контекста просто сообщает Netsh, какую вспомогательную DLL надо загрузить. Посмотреть весь список подключенных библиотек можно с помощью команды show helper


Синтаксис использования Netsh не в интерактивном режиме.

netsh.exe [-a AliasFile] [-c Context] [-r RemoteMachine] [-u [DomainName\]UserName] [-p Password | *] [Command | -f ScriptFile]

-a AliasFile - не завершать работу а перейти к приглашению ввода команд после выполнения AliasFile. AliasFile - имя текстового файла, в котором содержатся одна или несколько команд netsh

-c Context - изменить контекст (уровень) команд netsh

-r RemoteMachine - выполнять команды netsh на удаленном компьютере. В качестве RemoteMachine может использоваться имя компьютера или IP-адрес

[-u DomainName\]UserName - имя пользователя для подключения к удаленному компьютеру Если не задано, то используется текущее имя пользователя

-p Password пароль для подключения к удаленному компьютеру

Command - команда оболочки netsh, которую необходимо выполнить

-f ScriptFile - аналогично ключу -a, но после выполнения команд файла сценария Scriptfile, работа netsh завершается

Команды Netsh

Первое что стоит понять это как правильно пользоваться Netsh, а именно с чего начать если не знаешь ничего. А начинать нужно со знака вопроса ? так можно получить справку по доступному перечню команд на данном уровне.

Так же знак вопроса ? стоит добавлять в конце каждой команды в которой вы не уверенны. Это позволит избежать многих проблем показав правильный синтаксис команды.

Список команд:

help / ?
Отображает список доступных команд в текущем контексте.
..
Переход к контексту, на один уровень в верх.
add / delete helper
Устанавливает / удаляет вспомогательную динамическую библиотеку (DLL) в netsh. Команда add helper работает во всех контекстах, однако в других контекстах с помощью команды add можно так же добавлять и другие конфигурации.
alias / unalias
Позволяет создавать / удалять сокращения или псевдонимы для пользовательских команд. При использовании без параметров alias отображает все доступные псевдонимы.
bye / exit / quit
Три команды для выхода из netsh.
dump
Создает скрипт, содержащий текущую конфигурацию. Если вы сохраните этот сценарий в файле, вы можете использовать этот файл для восстановления параметров конфигурации, которые были изменены. При использовании без параметров dump отображает все конфигурации контекста netsh.
exec
Загружает файл сценария и запускает команды из него.
online /offline
Устанавливает состояние в машины в оперативный / автономный режим. Изменения, сделанные в оперативном режиме, немедленно отображаются в текущей конфигурации. Если изменения сделаны в автономном режиме, то они будут отображены после перехода в оперативный режим.
commit / abort
Выполняет / Отменяет любые изменения, сделанные в автономном режиме(offline). commit / abort не действует в онлайн-режиме.
pushd / popd
Сохраняет текущий контекст в стеке «первый-в-последнем» (FILO) / Восстанавливает контекст из стека. Используемый вместе с pushd, popd позволяет вам изменять контекст, запускать команду в новом контексте и возобновлять предыдущий контекст.
set
На первом уровне у команды set есть 2 подкоманды mode и file. Команда set mode online| offline эквивалентна простому online/offline.
set file
Копирует вывод окна командной строки в файл. set file open c:\filename.txt будет сохранять в filename.txt все что вводиться в консоль до того момента пока не будет введена команда set file close или одна из команд выхода (exit, buy, quit).
show
Универсальная команда работает во всех контекстах, отображает текущее состояние каких-либо настроек (alias, helper, mode).


Примеры использования Netsh

Для начала нужно запустит netsh, не просто запустить, а запустить с правами администратора, ведь большая часть команд попросту не будет работать без привилегий админа. Сделать это можно разными способами, я использую этот: Кликаем правой кнопкой мыши по меню пуск

Открываем командную строку с правами администратора и запускаем netsh в интерактивном режиме:

И первое что мы сделаем это сохраним текущую конфигурацию сети, для этого воспользуемся этим командами:
set file open C:\conf.txt
dump
set file close

Все что было выведено в консоли теперь находиться в файле C:\conf.txt Второй способ - использовать netsh с перенаправлением вывода команды dump в файл, но теперь сохраним только контекст interface ipv4:
(для того что бы его использовать нужно выйти из интерактивного режима)
netsh interface ipv4 dump > C:\ipconf.txt

Проверим создались ли файлы.

Теперь, когда у нас есть пара файлов для восстановления конфигурации сети можно попробовать настраивать сетевые параметры, но сначала упростим себе задачу по восстановлению. Для это создадим пользовательскую команду (заходим в интерактивный режим):
alias restoreip exec c:\ipconf.txt
и сразу проверим как выглядит наша команда введем команду alias без параметров:

Теперь можно попробовать что ни будь испортить изменить. Попробуем поменять ip address нашего компьютера. Для этого заходим в контекст interface ipv4, а что делать дальше мы не знаем по этому напираем команду ?

Команда set это то что нам нужно. Набираем set ?

И опять используем неизвестную нам команду со знаком вопроса в конце set address ?

Теперь, когда мы знаем правильный синтаксис команды set address можем начинать ломать нашу сеть попробовать изменить наш ip address Перед тем как поменять посмотрим какой у нас ip address, для этого в место set поставим show

Пробуем set address “Ehternet” static 10.20.30.40 255.255.255.0 10.20.30.0 1 И вот мы получили красивый ip address и проблемы с интернетом

А теперь вообще удалим настройки сетевого адаптера delete address “Ehternet” 10.20.30.40 all


Ну а теперь попробуем вернуть настройки с помощью созданной ранее команды restoreip (стоит помнить, что после закрытия консоли пользовательские команды не сохраняются, поэтому я решил показать, что можно обойтись просто командой exec)

Все сетевые настройки, связанные с протоколом ipv4 были восстановлены (ну или почти все).