PowerCLI – Delete Port Groups using a CSV list

During a recent NSX-T Upgrade project, I was required to migrate VMs from traditional VLAN backed distributed port groups onto NSX-T port groups. This left a large number of port groups that needed to be removed. Fortunately, I was able to export a CSV list and run this quick function to import the CSV list and delete the port groups.

Prior to deleting each PG it will check for existing VMs and display an error if a VM exists before moving on to the next, for example:

The function is as follows

function DeletePortgroups {
$csvlocation = Read-Host " Please enter csv location"
$deletenetworks = Import-Csv $csvlocation

ForEach ($item in $deletenetworks)
$pg = $item.PortGroup
if(((Get-VDPortGroup -Name $pg).ExtensionData.Vm).Count -eq 0){
		 Write-Host ".... Portgroup $pg removed" -ForegroundColor Green
		 Get-VDPortGroup -Name $pg | Remove-VDPortGroup -Confirm:$false
    Write-Host ".... Portgroup $pg in use by a VM" -ForegroundColor Red
	Start-Sleep -Second 1



Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.