param ( [string]$VMHostName, [string]$VSwitchName, [switch]$Confirm = $True, [switch]$WhatIf = $True ) # Gather objects to remove $vs = Get-VirtualSwitch -VMHost $VMHostName -Name $VSwitchName $pg = Get-VirtualPortGroup -VirtualSwitch $vs $pgName = $pg | ForEach-Object { $_.Name } $vnic = Get-VMHostNetwork -VMHost $VMHostName | ForEach-Object { $_.ConsoleNic $_.VirtualNic } | Where-Object { $pgName -contains $_.PortGroupName } # Remove objects in this order: Vnic, PortGroup, VSwitch Remove-VMHostNetworkAdapter -Nic $vnic -Confirm:$Confirm -WhatIf:$WhatIf Remove-VirtualPortGroup -VirtualPortGroup $pg -Confirm:$Confirm -WhatIf:$WhatIf Remove-VirtualSwitch -VirtualSwitch $vs -Confirm:$Confirm -WhatIf:$WhatIf