如何删除Hyper-V虚拟以太网交换机


21

Hyper-V中过时的VM开关不再使用,当我尝试删除它时,它总是失败并显示以下消息:

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中删除不起作用,或者:

图形用户界面


访问被拒绝错误=权限问题。你使用管理员吗?
magicandre1981

是的,我以管理员身份运行。我注意到错误是令人误解的。下划线的网络适配器在网络共享中心中消失了,我相信这是错误的,但是如何删除该vmswitch。
fluter

Answers:


13

在Microsoft的TechNet论坛上解决了类似的问题:

我们在Virtual Switch Manager中有一个虚拟交换机设置,并且已使用网络和共享中心的“更改适配器设置...”错误地删除了该适配器。现在,显然开关处于故障状态,我们只想从列表中将其删除。

最终,OP在注册表中进行了深入搜索,并找到了存储在以下注册表项中的虚拟交换机配置:

HKLM \ SYSTEM \ CurrentControlSet \ Services \ VMSMP \ Parameters \ SwitchList

他们删除了该键中的相应值并重新启动后,虚拟交换机就消失了。

与往常一样,我建议您.reg在尝试进行类似更改之前将当前设置导出到文件中以进行适当的备份。

(来源:无法从Hyper-V的Virtual Switch Manager中删除发生故障的虚拟交换机


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}
JohnZaj

14

我不想安装Azure Powershell工具,所以我只是按照此视频中的步骤操作:https : //www.youtube.com/watch?v=V5Gb342gSGg

基本上,您转到网络连接->要删除的虚拟交换机的打开属性->单击配置->转到驱动程序选项卡->卸载设备。

为了防止Hyper-V服务下次创建新的计算机,我在不完全禁用计算机的情况下重新启动计算机,而是将每个Hyper-V服务的“启动类型”更改为“手动”。


这仍然将所有对docker svc的引用保留在注册表中:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ vmsmp \ parameters \ SwitchList \ {yada yada}和HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSEt001 \ Control \ Network \ {yada yada}
JohnZaj

1
迄今为止最好的解决方案。避免接触注册表应该是最佳做法。
Soleil

8

即使我不使用Docker,我也想找到一个不使用Docker的解决方案regedit,因此在尝试了RobV8R的答案后,我在MS Technet上找到了有关此问题的说明。

Get-HNSNetwork | Remove-HNSNetwork

或者,对于更过滤的视蛋白,这就是我所需要的。

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

另外,我假设您将要遵循@ mxgg250的建议,并将所有hyper-v服务设置为手动启动,否则它将在重新启动时重新创建开关。


“ Get-HNSNetwork |?名称-如'nat'| Remove-HNSNetwork”-很好地删除了Windows卸载Docker后遗留下的'nat'VMSwitch,谢谢!
Froosh

…也记录在Microsoft的Docker清理指令docs.microsoft.com/en-us/virtualization/windowscontainers/…–
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

如您所见,我有一个名为的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

答案很简单。因为我已经配置了nat一个NetNat VMSwitch,我删除了NetNat。我不确定这是否是必要的步骤,但是我还是这么做了。

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

然后我停止了Docker。

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
仅供参考,此过程可能不起作用。它对我不起作用。没有docker服务正在运行,仍然无法消除悬空nat。因此,可能有必要诉诸@ Run5K答案
mloskot

4

我不确定这是否正确,但对我有用https : //www.online-tech-tips.com/computer-tips/unable-delete-network-adapter-windows-10/


更新

来源:无法在Windows 10中删除网络适配器?

方法1 –使用设备管理器

您可以尝试做的第一件事是打开“设备管理器”(单击“开始”并键入设备管理器),展开“网络适配器”,然后右键单击要删除的网络适配器。

在此处输入图片说明

在这里,您将看到一个名为“卸载设备”的选项。希望不应将其显示为灰色。如果是,请继续执行下一个方法。选择卸载设备后,将出现另一个窗口,要求您确认卸载。

在此处输入图片说明

您还将看到一个删除设备驱动程序软件的选项。如果要完全删除网络适配器,建议您也选择此选项以删除驱动程序。如果一切顺利,您应该看到适配器已从“设备管理器”和“控制面板”中的网络适配器列表中删除。

如果您没有在此处看到列出的设备,则可以尝试单击“ 查看”,然后单击“ 显示隐藏的设备”。

方法2 –删除网络配置文件

我们也可以尝试通过命令行删除网络配置文件,然后再次尝试方法1。首先,您必须打开提升权限的命令提示符,方法是:单击开始,输入CMD,然后右键单击命令提示符,然后选择以管理员身份运行

现在,键入以下命令以查看所有有线(以太网)适配器:

netsh lan show profiles

如果您需要卸下无线适配器,请键入以下命令:

netsh wlan show profiles

如果收到有关有线WLAN AutoConfig服务未运行的错误消息,请单击“开始”,键入services.msc,右键单击相应的服务,然后选择“ 启动”

在此处输入图片说明

现在,当您运行命令时,应该会看到配置文件列表。就我而言,这台计算机上只有一个配置文件。

在此处输入图片说明

接下来,键入以下命令,这将删除所需的接口。

netsh lan delete profile interface="InterfaceName"

同样,如果它是无线接口,请使用wlan而不是lan。运行show profile命令时,接口名称列在每个标题的顶部(接口名称上的Profile)。删除配置文件后,重新启动计算机,然后再次尝试方法1。

方法3 –通过注册表删除适配器设置

重要

如果需要编辑注册表,请确保先备份注册表

除了删除网络配置文件之外,您还可以尝试通过注册表删除适配器设置。删除设置后,您可以返回方法1并尝试删除适配器。要删除设置,请打开注册表编辑器(单击“开始”,然后键入regedit.msc),然后导航到以下项:

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

您会看到列出的一系列随机数很大的项目。如果单击每个,您将看到分配给该网络适配器的IP地址。

在此处输入图片说明

您可以通过打开命令提示符(“开始”并键入cmd)并键入ipconfig来确认哪个网络适配器与该注册表项相对应。

在此处输入图片说明

如您所见,以太网适配器是IP地址为192.168.1.233的适配器。因此,您将删除以{73123f2a-ad10-4f4b-900e ...}开头的接口下的密钥。如果单击其他界面,其中一个将具有IP 192.168.247.1,该IP与计算机上的VMWare网络适配器相对应。同样,这只会删除适配器的设置,而不是适配器本身。重新启动计算机,然后再次尝试方法1。

有关更多信息,请参考以下链接:

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


2

在尝试上述解决方案之前,请确保检查“详细信息”窗格中的错误消息。就我而言,它读取失败是由于其他VM仍在使用该交换机而导致的。

关闭虚拟机然后重试,确实删除了交换机。

详细信息窗格


0

在Microsoft的TechNet论坛上,有一种更简单的方法可以解决此问题:

尝试从“ 控制面板 > 网络和Internet > 网络连接 ”中删除网桥适配器

来源:https : //social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/e49df568-4f4c-47b7-b30c-952d1e26ca58/#8ecfa676-3184-4035-96de-10df079f706f


1
我没有网桥适配器。
约翰尼

@johnny可以从“网络连接”窗口共享网络适配器的屏幕截图吗?也许您可以按照此答案中的说明通过卸载Hyper-V可扩展虚拟交换机协议来解决
亚历杭德罗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.