Como remover um comutador Ethernet virtual Hyper-V

21

Um comutador VM obsoleto no Hyper-V não é mais usado e, quando tento excluí-lo, sempre falha com a seguinte mensagem:

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

Tentar excluir dentro da GUI também não funciona:

GUI

agitar
fonte
erro de acesso negado = problema de permissão. você usa admin?
magicandre1981
sim, estou executando como administrador. Notei que o erro é enganoso. O adaptador de rede sublinhado desapareceu no centro de compartilhamento de rede, acredito que seja esse o erro, mas como posso remover esse vmswitch.
fluter

Respostas:

13

Um problema semelhante foi resolvido nos fóruns do TechNet da Microsoft:

Temos uma configuração de comutador virtual no Virtual Switch Manager e o adaptador foi excluído por engano usando as "Alterar configurações do adaptador ..." do Centro de rede e compartilhamento. Agora, obviamente, o switch está em um estado com falha e nós apenas queremos removê-lo da lista.

Por fim, o OP realizou uma pesquisa aprofundada no registro e encontrou a configuração do comutador virtual armazenada na seguinte chave:

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

Depois de excluir o valor correspondente dentro dessa chave e reiniciar, o comutador virtual se foi.

Como sempre, recomendo que você exporte suas configurações atuais para um .regarquivo para ter um backup apropriado antes de tentar alterações semelhantes.

(Fonte: Não é possível remover o comutador virtual com falha do Virtual Switch Manager do Hyper-V )

Run5k
fonte
1
Eu posso confirmar que isso funcionou para mim. Thx
mloskot 19/03/19
Não consigo encontrar esse valor no registro: /
Jurosh 29/03
1
Isso funcionou para mim, no entanto, eu também tive que cavar a conexão de rede no registro para excluí-lo. Isso ainda deixou todas as referências ao docker svc no registro: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ vmsmp \ parameters \ SwitchList \ {yada yada} e HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSEt001 \ Control \ Network \ {yada yada}
JohnZaj
14

Não queria instalar as ferramentas do Azure Powershell, apenas segui as etapas deste vídeo: https://www.youtube.com/watch?v=V5Gb342gSGg

Basicamente, você acessa Conexões de rede -> abra propriedades do comutador virtual que deseja excluir -> clique em Configurar -> vá para a guia Driver -> Desinstalar dispositivo.

Para impedir que o serviço Hyper-V crie um novo na próxima vez que reiniciar o computador sem desativá-lo, mudei o Tipo de inicialização de cada serviço Hyper-V para Manual.

mxgg250
fonte
Isso ainda deixou todas as referências ao docker svc no registro: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ vmsmp \ parameters \ SwitchList \ {yada yada} e HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSEt001 \ Control \ Network \ {yada yada}
JohnZaj
1
De longe a melhor solução. Evitar tocar no registro deve ser uma prática recomendada.
Soleil
8

Embora não esteja usando o Docker, queria descobrir uma solução sem usá- regeditlo. Portanto, depois de tentar a resposta do RobV8R , encontrei instruções sobre esta questão no MS Technet .

Get-HNSNetwork | Remove-HNSNetwork

Ou, para uma opção mais filtrada, é disso que eu precisava.

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

Além disso, vou assumir que você deseja seguir os conselhos de @ mxgg250 e definir todos os serviços do hyper-v para inicialização manual, caso contrário, ele recriará a opção na reinicialização.

bradlis7
fonte
"Get-HNSNetwork |? Nome -Como 'nat' | Remove-HNSNetwork" - Funcionou muito bem para remover o VMSwitch 'nat' deixado para trás depois de desinstalar o Docker for Windows, obrigado!
Froosh
… Que também está documentado nas instruções do Docker de limpeza da Microsoft docs.microsoft.com/en-us/virtualization/windowscontainers/…
Froosh,
6

COMEÇAR A EDITAR

As versões mais recentes do Windows 10 introduziram um comutador virtual "Rede padrão".

Se este método não funcionar, consulte a resposta de @ bradlis7 para outra opção.

EDIT FIM

Isso foi testado no Windows 10 1607.

Resposta curta, se você estiver usando o Docker:

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

Resposta longa:

Se você se deparar com essa situação e tiver Contêineres ativados ou Docker instalado, será necessário parar o Docker antes de remover o VMSwitch.

PS> Get-VMSwitch

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

Como você pode ver, eu tenho um VMSwitch chamado nat . Eu quero que isso passe logo.

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

A resposta acabou sendo bastante simples. Porque eu tinha configurado onat VMSwitch com um NetNat, removi o NetNat. Não tenho certeza se este é um passo necessário, mas fiz de qualquer maneira.

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

Então eu parei o Docker.

PS> Stop-Service com.docker.service

E finalmente

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"):

Para se certificar de que ele se foi:

PS> Get-VMSwitch

Name                                   SwitchType NetAdapterInterfaceDescription
----                                   ---------- ------------------------------
DockerNAT                              Internal
Windows Phone Emulator Internal Switch Private
Primary Virtual Switch                 External   Intel(R) Wireless
RobV8R
fonte
2
Para sua informação, este procedimento pode não funcionar. Isso não funciona para mim. Nenhum serviço de docker está em execução, ainda não é possível renunciar ao dangling nat. Assim, pode ser necessário recorrer à @ resposta Run5K
mloskot
4

Não tenho certeza se isso está correto, mas funcionou para mim: https://www.online-tech-tips.com/computer-tips/unable-delete-network-adapter-windows-10/


ATUALIZAR

Fonte: Não foi possível excluir o adaptador de rede no Windows 10?

Método 1 - usar o Gerenciador de dispositivos

A primeira coisa que você pode tentar fazer é abrir o Gerenciador de dispositivos (clique em Iniciar e digite Gerenciador de dispositivos), expanda Adaptadores de rede e clique com o botão direito do mouse no adaptador de rede que deseja remover.

insira a descrição da imagem aqui

Aqui, você verá uma opção chamada Desinstalar dispositivo. Espero que isso não deva ser acinzentado. Se for, continue com o próximo método. Quando você seleciona o dispositivo de desinstalação, outra janela aparece pedindo para confirmar a desinstalação.

insira a descrição da imagem aqui

Você também verá uma opção para excluir o software do driver do dispositivo. Se você deseja remover completamente o adaptador de rede, sugiro selecionar esta opção para remover também o driver. Se tudo der certo, você verá que o adaptador foi removido do Gerenciador de dispositivos e da lista de adaptadores de rede no Painel de controle.

Se você não vir o dispositivo listado aqui, tente clicar em Exibir e depois em Mostrar dispositivos ocultos .

Método 2 - Excluir perfil de rede

Também podemos tentar excluir o perfil de rede através da linha de comando e tentar o Método 1 novamente. Primeiro, você deve abrir um prompt de comando elevado clicando em Iniciar, digitando CMD e, em seguida, clicando com o botão direito do mouse no prompt de comando e escolhendo Executar como Administrador. .

Agora digite o seguinte comando para ver todos os adaptadores com fio (Ethernet):

netsh lan show profiles

Se você precisar remover um adaptador sem fio, digite este comando:

netsh wlan show profiles

Se você receber alguma mensagem de erro sobre a Wired ou serviço de Configuração Automática de WLAN não está funcionando, em seguida, clique em Iniciar, digite services.msc, clique direito do mouse no serviço adequado e escolha Iniciar .

insira a descrição da imagem aqui

Agora, quando você executa o comando, você deve ver uma lista de perfis. No meu caso, só tenho um perfil neste computador.

insira a descrição da imagem aqui

Em seguida, digite o seguinte comando, que excluirá a interface desejada.

netsh lan delete profile interface="InterfaceName"

Novamente, se for uma interface sem fio, use wlan em vez de lan . O nome da interface é listado na parte superior de cada cabeçalho ( Perfil no nome da interface ) quando você executa o comando show profiles. Depois que o perfil for excluído, reinicie o computador e tente o Método 1 novamente.

Método 3 - Remover configurações do adaptador via registro

IMPORTANTE

Se você precisar editar o registro, faça backup do registro primeiro .

Além de excluir o perfil de rede, você também pode tentar remover as configurações do adaptador por meio do registro. Depois de remover as configurações, você pode voltar ao método 1 e tentar remover o adaptador. Para remover as configurações, abra o editor de registro (clique em Iniciar e digite regedit.msc) e navegue até a seguinte chave:

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

Você verá vários itens listados com uma longa série de números aleatórios. Se você clicar em cada um, verá o endereço IP atribuído a esse adaptador de rede.

insira a descrição da imagem aqui

Você pode confirmar qual adaptador de rede corresponde a essa chave do Registro abrindo um prompt de comando (Iniciar e digite cmd) e digitando ipconfig .

insira a descrição da imagem aqui

Como você pode ver, o adaptador Ethernet é aquele que possui um endereço IP 192.168.1.233. Portanto, você excluiria a chave em Interfaces que começa com {73123f2a-ad10-4f4b-900e…} . Se você clicar em uma interface diferente, um deles terá o IP 192.168.247.1, que corresponde ao VMWare Network Adapter no computador. Novamente, isso exclui apenas as configurações do adaptador, não o próprio adaptador. Reinicie o computador e tente o método 1 novamente.

Para mais informações, consulte o seguinte link:

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

Kamran
fonte
2

Antes de tentar as soluções acima, verifique o painel 'detalhes' da mensagem de erro. No meu caso, ele leu que a falha ocorreu devido a outras VMs ainda usando o switch.

Virando a VMs off e tentar novamente, não retire a chave.

Painel de detalhes

Vaibhav Singh
fonte
0

Há uma maneira mais simples de corrigir o problema nos fóruns do TechNet da Microsoft:

Tente excluir o adaptador de ponte em " Painel de controle > Rede e Internet > Conexões de rede "

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

Alejandro
fonte
Eu não tenho um adaptador de ponte.
johnny
@johnny Você pode compartilhar uma captura de tela dos seus adaptadores de rede na janela "Conexões de rede"? Talvez você possa resolvê-lo desinstalando o protocolo Hyper-V Extensible Virtual Switch seguindo as instruções desta resposta .
Alejandro