Como remover um comutador de Ethernet virtual do Hyper-V

12

Um switch de VM obsoleto no Hyper-V não é mais usado e, quando tento excluí-lo, ele 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

A tentativa de excluir dentro da GUI não funciona:

    
por fluter 26.03.2017 / 12:27

6 respostas

10

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

We have a virtual switch setup in the Virtual Switch Manager and the adapter has been deleted by mistake using the "Change Adapter Settings..." of the Network And Sharing Center. Now, obviously the switch is in a failed state and we just want to remove it from the list.

Em última análise, o OP realizou uma pesquisa detalhada no registro e encontrou a configuração do switch virtual armazenada na seguinte chave:

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

Depois que eles excluíram o valor correspondente nessa chave e reinicializaram, o comutador virtual desapareceu.

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

(Fonte: Não é possível remover o comutador virtual com falha do Gerenciador de Comutador Virtual do Hyper-V

    
por 26.03.2017 / 14:19
5

Eu não queria instalar as ferramentas do Azure Powershell, então apenas segui as etapas deste vídeo: link

Basicamente você vai para Conexões de Rede - > abrir propriedades para o comutador virtual que você deseja excluir - > clique em Configurar - > vá até a guia Driver - > Desinstalar o dispositivo.

Para evitar que o serviço do Hyper-V crie um novo na próxima vez que eu reiniciar o computador sem desabilitá-lo completamente, alterei o tipo de inicialização de cada serviço do Hyper-V para ser Manual.

    
por 06.01.2018 / 19:16
4

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

Longa resposta:

Se você encontrar essa situação e tiver os Containers ativados ou o Docker instalado, será necessário interromper o Docker antes de poder 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 vá embora.

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. Como eu tinha configurado o nat VMSwitch com um NetNat, removi o NetNat. Não tenho certeza se este é um passo necessário, mas eu fiz isso de qualquer maneira.

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

Depois 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 desapareceu:

PS> Get-VMSwitch

Name                                   SwitchType NetAdapterInterfaceDescription
----                                   ---------- ------------------------------
DockerNAT                              Internal
Windows Phone Emulator Internal Switch Private
Primary Virtual Switch                 External   Intel(R) Wireless
    
por 29.05.2017 / 03:27
1

Embora eu não esteja usando o Docker, queria descobrir uma solução sem usar regedit , então, depois de tentar a resposta de 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 supor que você desejará seguir o conselho do @mxgg250 e configurar todos os serviços do hyper-v para o início manual, caso contrário, ele recriará o switch na reinicialização.

    
por 24.08.2018 / 17:12
0

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

Try Deleting the Bridge Adapter from "Control Panel > Network and Internet > Network Connections"

Fonte: link

    
por 02.12.2017 / 05:07
0

Não tenho certeza se isso está certo, mas funcionou para mim: link

    
por 25.10.2018 / 18:10