Удаление скрытых сетевых адаптеров в Windows
При замене материнской платы, сетевой карты, P2V миграции, холодном переносе виртуальных машин между различными типами гипервизоров, настройке VLAN на сетевом интерфейсе Windows вы можете столкнуться с проблемой наличия скрытых (невидимых) сетевых адаптеров. В результате вы не можете назначить старый статический IP адрес для нового сетевого интерфейса, так как старый IP был назначен ранее удаленному адаптеру.
Windows автоматически скрывает устройства, которые присутствуют в конфигурации Windows, но физически не подключены к компьютеру. Скрытый сетевой адаптер в системе остается, если вы физически отключили установленную ранее сетевую карту (это может быть, как физический NIC, так и виртуальная сетевая карта). Установленная ранее сетевая карта становится скрытой, и не доступна в диспетчере оборудования.
Ошибка: IP-адрес уже назначен другому сетевому адаптеру
Главная проблема со скрытыми сетевыми адаптерами – вы не сможете назначить IP адрес старого сетевого адаптера новой сетевой карте. При попытке назначить старый IP адрес появляется предупреждение:
Microsoft TCP/IP IP-адрес 192.168.1.50, который вы задали для этого сетевого адаптера, уже назначен другому адаптеру. Если обоим устройствам назначен один и тот же адрес и оба адаптеры активны, только один из них сможет его использовать. Это может привести к неполадкам в работе системы. Вы хотите задать другой IP адрес для этого адаптера в списке IP-адресов в окне дополнительных параметров.
The IP addressyou have entered for this network adapter is already assigned to another adapter (Intel Gigabit Network Connection) which is no longer present in the computer. If the same address is assigned to both adapters and they both become active, only one of them will use this address. This may result in incorrect system configuration. Do you want to remove the static IP configuration for the absent adapter?
you have entered for this network adapter is already assigned to another adapter «>
Если попробовать задать IP адрес адаптера с помощью PowerShell, появится ошибка:
New-NetIPAddress –IPAddress 192.168.13.153 -DefaultGateway 192.168.13.1 -PrefixLength 24 -InterfaceIndex 22
New-NetIPAddress : The object already exists. Windows System Error 5010,New-NetIPAddress
С этой проблемой я часто сталкиваюсь в виртуальных машинах VMWare с виртуальным сетевым адаптером VMXNet3. Новая сетевая карта определяется как новое устройство (в отличии от vNIC типа E1000). Т.е. если вы удалили у ВМ VMWare сетевую карту (vNIC), а потом добавили новую, вы не сможете использовать старый IP адрес, назначенный удаленному сетевому интерфейсу.
Также проблема скрытых сетевых адаптеров появляется после выполнения миграции физического сервера в ВМ (Physical-to-Virtual — P2V), например с помощью VMware Converter. При миграции ОС остаются отключенные физические сетевые адаптеры, статические настройки IP адресов которых вам нужно использовать для новых vNIC.
Прежде чем назначить старый статический IP адрес новому сетевому адаптеру, нужно удалить конфигурацию отключенной сетевой карты.
Показать скрытые сетевые адаптеры в диспетчере оборудования Windows
Чтобы показать скрытые (отключенные физически) сетевые адаптеры в Windows нужно запустить консоль “Диспетчер устройств” (Device Manager) в специальном режиме.
Для этого в Windows 7 (и ниже):
- Нужно запустить командую строку с правами администратора;
- Выполните команду:
set devmgr_show_nonpresent_devices=1
- Запустите консоль Device Manager:
devmgmt.msc
В верхнем меню включите пункт Вид -> Показать скрытые устройства.
Разверните секцию Сетевые адаптеры (Network adapters). В списке должны появится скрытые сетевые карты (с бледными значками). Выберите сетевую карту, которую нужно удалить, ПКМ -> Удалить устройство (Uninstall Device). Можете сразу удалить драйвер, отметив опцию Delete the driver software for this device.
Как удалить скрытую сетевую карту из командной строки или PowerShell?
Вы можете вывести список скрытых сетевых адаптеров в Windows с помощью PowerShell:
Get-PnpDevice -class net | ? Status -eq Unknown | Select FriendlyName,InstanceId
Удалить такой сетевой адаптер можно по его InstanceId (скопируйте его значение из предыдущей команды):
$InstanceId = “PCIVEN_8086&DEV_10D3&SUBSYS_07D015AD&REV_00