Как удалить виртуальный коммутатор Hyper-V

21

Устаревший коммутатор VM в Hyper-V больше не используется, и когда я пытаюсь удалить его, он всегда выдает следующее сообщение:

PS C:\> Get-VMSwitch nat

Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
nat  Private


PS C:\> Get-VMSwitch nat | Remove-VMSwitch -Force
Remove-VMSwitch : Failed while removing virtual Ethernet switch.
Switch delete failed, switch = 'acf82f05-c07c-4b35-8588-921498456027':    General access denied error (0x80070005).
At line:1 char:20
+ Get-VMSwitch nat | Remove-VMSwitch -Force
+                    ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : PermissionDenied: (:) [Remove-VMSwitch], VirtualizationException
+ FullyQualifiedErrorId : AccessDenied,Microsoft.HyperV.PowerShell.Commands.RemoveVMSwitch

Попытка удаления в графическом интерфейсе также не работает:

графический интерфейс пользователя

fluter
источник
ошибка доступа запрещена = проблема с разрешением. ты используешь админ?
magicandre1981
да, я работаю администратором Я заметил, что ошибка вводит в заблуждение. Подчеркнутый сетевой адаптер пропал в сетевом ресурсе, я считаю, что это ошибка, но как я могу удалить этот vmswitch.
флейтер

Ответы:

13

Подобная проблема была решена на форумах Microsoft TechNet:

У нас есть настройка виртуального коммутатора в диспетчере виртуальных коммутаторов, и адаптер был удален по ошибке с помощью «Изменить настройки адаптера ...» Центра управления сетями и общим доступом. Теперь, очевидно, коммутатор находится в состоянии сбоя, и мы просто хотим удалить его из списка.

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

HKLM \ SYSTEM \ CurrentControlSet \ Services \ VMSMP \ Параметры \ SwitchList

После того как они удалили соответствующее значение в этом ключе и перезагрузили, виртуальный коммутатор исчез.

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

(Источник: невозможно удалить сбойный виртуальный коммутатор из диспетчера виртуальных коммутаторов Hyper-V )

Run5k
источник
1
Я могу подтвердить, что это сработало для меня. Thx
mloskot
Я не могу найти такое значение в реестре: /
Jurosh
1
Это сработало для меня, однако мне также пришлось покопаться в сетевом подключении в реестре, чтобы удалить его. Это все еще оставило все ссылки на docker svc в реестре: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ vmsmp \ parameters \ SwitchList \ {yada yada} и HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSEt001 \ Control \ Network \ {
yada yada
14

Я не хотел устанавливать инструменты Azure Powershell, поэтому я просто выполнил действия, описанные в этом видео: https://www.youtube.com/watch?v=V5Gb342gSGg

В основном вы идете в Сетевые подключения -> открыть свойства для виртуального коммутатора, который вы хотите удалить -> нажмите Настроить -> перейдите на вкладку Драйвер -> Удалить устройство.

Чтобы в следующий раз служба Hyper-V не создала новую, я перезагружаю компьютер, не отключая его полностью, поэтому я изменил тип запуска каждой службы Hyper-V на «Вручную».

mxgg250
источник
Это все еще оставило все ссылки на docker svc в реестре: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ vmsmp \ parameters \ SwitchList \ {yada yada} и HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSEt001 \ Control \ Network \ {
yada yada
1
Безусловно, лучшее решение. Избегание касания реестра должно быть лучшей практикой.
Солей
8

Несмотря на то, что я не использую Docker, я хотел найти решение без использования regedit, поэтому после попытки ответа от RobV8R я нашел инструкции по этому вопросу в MS Technet .

Get-HNSNetwork | Remove-HNSNetwork

Или, для более фильтрованного оптоина, это то, что мне нужно.

Get-HNSNetwork | ? Name -Like "Default Switch" | Remove-HNSNetwork

Кроме того, я собираюсь предположить, что вы захотите последовать совету @ mxgg250 и настроить все службы hyper-v на ручной запуск, в противном случае он будет воссоздавать переключатель при перезагрузке.

bradlis7
источник
"Get-HNSNetwork |? Name -Like 'nat' | Remove-HNSNetwork" - Отлично поработал над удалением переключателя 'nat' VMSwitch, оставшегося после удаления Docker для Windows, спасибо!
Froosh
Которое
Froosh
6

НАЧАТЬ РЕДАКТИРОВАТЬ

В новых версиях Windows 10 появился виртуальный коммутатор «Сеть по умолчанию».

Если этот метод не работает, см. Ответ от @ bradlis7 для другого варианта.

КОНЕЦ РЕДАКТИРОВАНИЯ

Это было проверено на Windows 10 1607.

Короткий ответ, если вы используете Docker:

PS> Stop-Service com.docker.service
PS> Remove-ContainerNetwork -Name nat

Длинный ответ:

Если вы столкнетесь с этой ситуацией и у вас будут включены контейнеры или установлен Docker, вам нужно остановить Docker, прежде чем вы сможете удалить VMSwitch.

PS> Get-VMSwitch

Name                                   SwitchType NetAdapterInterfaceDescription
----                                   ---------- ------------------------------
DockerNAT                              Internal
nat                                    Internal
Windows Phone Emulator Internal Switch Private
Primary Virtual Switch                 External   Intel(R) Wireless

Как видите, у меня есть имя VMS-переключателя nat. Я хочу, чтобы это ушло.

PS> Remove-VMSwitch -Name nat

Confirm
Are you sure you want to remove the virtual switch "nat"?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
Remove-VMSwitch : Failed while removing virtual Ethernet switch.
Switch delete failed, switch = '<guid>': General access denied error (0x80070005).
At line:1 char:1
+ Remove-VMSwitch -Name nat
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Remove-VMSwitch], VirtualizationException
    + FullyQualifiedErrorId : AccessDenied,Microsoft.HyperV.PowerShell.Commands.RemoveVMSwitch

Ответ оказался довольно простым. Поскольку я настроил natVMS-переключатель с NetNat, я удалил NetNat. Я не уверен, является ли это необходимым шагом, но я все равно сделал это.

PS> Get-NetNat -Name '<name>' | Remove-NetNat

Затем я остановил Докер.

PS> Stop-Service com.docker.service

И наконец

PS> Remove-ContainerNetwork -Name nat

Confirm
Remove-ContainerNetwork will remove the container network "nat".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

Чтобы убедиться, что оно пропало:

PS> Get-VMSwitch

Name                                   SwitchType NetAdapterInterfaceDescription
----                                   ---------- ------------------------------
DockerNAT                              Internal
Windows Phone Emulator Internal Switch Private
Primary Virtual Switch                 External   Intel(R) Wireless
RobV8R
источник
2
К вашему сведению, эта процедура может не сработать. Это не работает для меня. Ни одна докерская служба не работает, до сих пор не может восстановить висячие nat. Так что, возможно, придется прибегнуть к ответу @ Run5K
mloskot
4

Я не уверен, что это правильно, но работал для меня: https://www.online-tech-tips.com/computer-tips/unable-delete-network-adapter-windows-10/


ОБНОВИТЬ

Источник: Невозможно удалить сетевой адаптер в Windows 10?

Способ 1 - использование диспетчера устройств

Первое, что вы можете попытаться сделать, это открыть Диспетчер устройств (нажмите «Пуск» и введите «Диспетчер устройств»), разверните «Сетевые адаптеры», а затем щелкните правой кнопкой мыши сетевой адаптер, который вы хотите удалить.

введите описание изображения здесь

Здесь вы увидите опцию под названием Удалить устройство. Надеюсь, это не должно быть серым. Если это так, перейдите к следующему способу. Когда вы выбираете удалить устройство, появится другое окно с просьбой подтвердить удаление.

введите описание изображения здесь

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

Если вы не видите устройства, перечисленного здесь, вы можете попробовать нажать « Просмотр», а затем « Показать скрытые устройства».

Способ 2 - удалить профиль сети

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

Теперь введите следующую команду, чтобы увидеть все проводные (Ethernet) адаптеры:

netsh lan show profiles

Если вам нужно удалить беспроводной адаптер, введите эту команду:

netsh wlan show profiles

Если вы получите какое - то сообщение об ошибке о проводной или службы автонастройки WLAN не работает, а затем нажмите кнопку Пуск, введите services.msc, щелкните правой кнопкой мыши на соответствующую службу и выберите Пуск .

введите описание изображения здесь

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

введите описание изображения здесь

Далее введите следующую команду, которая удалит нужный интерфейс.

netsh lan delete profile interface="InterfaceName"

Опять же, если это беспроводной интерфейс, используйте wlan вместо lan . Имя интерфейса указывается в верхней части каждого заголовка ( Профиль в имени интерфейса ), когда вы запускали команду show profile. После удаления профиля перезагрузите компьютер и попробуйте снова метод 1.

Способ 3 - удалить настройки адаптера через реестр

ВАЖНЫЙ

Если вам нужно отредактировать реестр, сначала сделайте резервную копию реестра .

Помимо удаления профиля сети, вы также можете попытаться удалить настройки адаптера через реестр. После удаления настроек вы можете вернуться к способу 1 и попытаться удалить адаптер. Чтобы удалить настройки, откройте редактор реестра (нажмите «Пуск» и введите regedit.msc) и перейдите к следующему ключу:

HKEY_LOCAL_MACHINE - SYSTEM - CurrentControlSet - Services - Tcpip - Parameters - Interfaces

Вы увидите несколько предметов, перечисленных с длинной серией случайных чисел. Если вы щелкнете по каждому из них, вы увидите IP-адрес, назначенный этому сетевому адаптеру.

введите описание изображения здесь

Вы можете подтвердить, какой сетевой адаптер соответствует этому разделу реестра, открыв командную строку (Start и введите cmd) и введя ipconfig .

введите описание изображения здесь

Как видите, Ethernet-адаптер имеет IP-адрес 192.168.1.233. Таким образом, вы удалили бы ключ в разделе Интерфейсы, который начинается с {73123f2a-ad10-4f4b-900e…} . Если вы щелкнете по другому интерфейсу, у одного из них будет IP 192.168.247.1, который соответствует сетевому адаптеру VMWare на компьютере. Опять же, это только удаляет настройки для адаптера, но не сам адаптер. Перезагрузите компьютер и попробуйте способ 1 снова.

Для получения дополнительной информации, пожалуйста, перейдите по следующей ссылке:

https://www.online-tech-tips.com/computer-tips/unable-delete-network-adapter-windows-10/

Камран
источник
2

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

Включение виртуальных машин от и попробовать еще раз, сделал снимите переключатель.

Панель сведений

Вайбхав Сингх
источник
0

Существует более простой способ решения проблемы на форумах Microsoft TechNet:

Попробуйте удалить Bridge Adapter из « Панель управления > Сеть и Интернет > Сетевые подключения »

Источник: https://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/e49df568-4f4c-47b7-b30c-952d1e26ca58/#8ecfa676-3184-4035-96de-10df079f706f

Alejandro
источник
1
У меня нет мостового адаптера.
джонни
@johnny Можете ли вы поделиться снимком экрана ваших сетевых адаптеров из окна «Сетевые подключения»? Возможно, вы сможете решить эту проблему, удалив протокол расширяемого виртуального коммутатора Hyper-V, следуя инструкциям из этого ответа .
Алехандро