Як видалити віртуальний вимикач Ethernet 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

Спроба видалити в GUI не працює:

GUI


помилка доступу заборонена = проблема з дозволом. ти використовуєш адміністратора?
magicandre1981

так, я працюю адміністратором. Я зазначив, що помилка вводить в оману. Підкреслений мережевий адаптер відсутній у мережевому центрі загального користування, я вважаю, що це помилка, але як я можу видалити цей vmswitch.
флейтер

Відповіді:


13

Аналогічна проблема була вирішена на форумах TechNet Microsoft:

У нас в Virtual Switch Manager є налаштування віртуальних комутаторів, і адаптер видалено помилково за допомогою "Змінити налаштування адаптера ..." Центру мереж та обміну. Тепер, очевидно, перемикач перебуває у невдалому стані, і ми просто хочемо його видалити зі списку.

Зрештою, ОП здійснив поглиблений пошук у реєстрі та знайшов конфігурацію віртуального комутатора, що зберігається в межах наступного ключа:

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

Після того, як вони видалили відповідне значення в межах цього ключа і перезавантажилися, віртуальний комутатор відсутній.

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

(Джерело: Неможливо видалити несправний віртуальний комутатор з Менеджера віртуальних комутаторів Hyper-V )


1
Я можу підтвердити, що це працювало для мене. Thx
mloskot

Я не можу знайти таке значення в реєстрі: /
Jurosh

1
Це працювало для мене, проте я ТАКОЖ повинен був зануритися в мережеве з'єднання в реєстрі, щоб видалити його. Це все ще залишило всі посилання на docker svc у реєстрі: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ vmsmp \ параметри \ 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 на "Ручний".


Це все ще залишило всі посилання на docker svc у реєстрі: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ vmsmp \ параметри \ SwitchList \ {yada yada} та HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSEt001 \ Control \ Network \ {
yada yada

1
На сьогодні найкраще рішення. Уникати торкання реєстру має бути найкращою практикою.
Солей

9

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

Get-HNSNetwork | Remove-HNSNetwork

Або для більш відфільтрованого оптоїна це те, що мені було потрібно.

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

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


„Get-HNSNetwork |
Froosh

… Що також задокументовано в інструкціях Microsoft Docker для очищення docs.microsoft.com/en-us/virtualization/windowscontainers/…
Froosh,

6

ПОЧАТОК редагувати

Новіші версії Windows 10 ввели віртуальний комутатор "Мережа за замовчуванням".

Якщо цей метод не працює, див. Відповідь від @ bradlis7 для іншого варіанту.

END EDIT

Це було протестовано на 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

Як бачите, у мене є ім'я VMSwitch 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

Відповідь виявилася досить простою. Оскільки я налаштував natVMSwitch з 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

2
FYI, ця процедура може не працювати. Це не працює для мене. Жодна служба докера не працює, все ще не може відновити звисання 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

Якщо ви отримали повідомлення про помилку про те, що служба Wired або WLAN AutoConfig не працює, натисніть кнопку Пуск, введіть services.msc, клацніть правою кнопкою миші відповідну послугу та оберіть Пуск .

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

Тепер, коли ви запускаєте команду, ви повинні побачити список профілів. У моєму випадку у мене на цьому комп’ютері є лише один профіль.

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

Далі введіть наступну команду, яка видалить потрібний інтерфейс.

netsh lan delete profile interface="InterfaceName"

Знову ж таки, якщо це бездротовий інтерфейс, використовуйте wlan замість lan . Ім'я інтерфейсу вказано вгорі кожної заголовка ( Профіль на ім’я інтерфейсу ), коли ви запускаєте команду показ профілів. Після видалення профілю перезавантажте комп'ютер і спробуйте метод 1 ще раз.

Спосіб 3 - Видаліть налаштування адаптера через реєстр

ВАЖЛИВО

Якщо вам потрібно відредагувати реєстр, переконайтесь, що ви попередньо створили резервну копію реєстру .

Крім видалення мережевого профілю, ви також можете спробувати видалити налаштування адаптера через реєстр. Після видалення налаштувань ви можете повернутися до способу 1 і спробувати видалити адаптер. Щоб видалити налаштування, відкрийте редактор реєстру (натисніть кнопку Пуск та введіть у regedit.msc) та перейдіть до наступної клавіші:

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

Ви побачите кілька пунктів, перелічених із довгою серією випадкових чисел. Якщо натиснути на кожну з них, ви побачите IP-адресу, призначену цьому мережевому адаптеру.

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

Ви можете підтвердити, який мережний адаптер відповідає цьому ключу реєстру, відкривши командний рядок (Пуск та введіть 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

Перш ніж спробувати рішення вище, переконайтесь, що перевірте панель "Подробиці" для повідомлення про помилку. У моєму випадку було прочитано, що збій стався через інші VM, які все ще використовують комутатор.

Вимкнення VM та повторення спроби вимкнено вимикач.

Панель деталей


0

Існує простіший спосіб вирішити проблему на форумах TechNet Microsoft:

Спробуйте видалити адаптер мосту з " Панелі управління > Мережа та Інтернет > Мережеві з'єднання "

Джерело: https://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/e49df568-4f4c-47b7-b30c-952d1e26ca58/#8ecfa676-3184-4035-96de-10df079f706f


1
У мене немає адаптера мосту.
johnny

@johnny Чи можете ви поділитися скріншотом ваших мережевих адаптерів у вікні "Мережеві з'єднання"? Можливо, ви можете це вирішити, видаливши протокол Hyper-V Extensible Virtual Switch, дотримуючись інструкцій з цієї відповіді .
Алехандро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.