PowerCLI: Get ESXi host standard and distributed switch uplink statuses

I recently had trouble with ESXi network uplinks, and I combined a script to get all network uplink statues from Standard and Distributed switches connected to each ESXi host. This script will loop through all hosts and display the status of all virtual switch uplinks.

$esxi_hosts = Get-VMHost -State Connected,Maintenance | Sort-Object -Property Name

foreach ($esxi_host in $esxi_hosts) {
    Write-Host "Checking host - $esxi_host" -ForegroundColor Green
    try {
        $esxcli = $esxi_host | Get-EsxCli -V2

        # Get all standard switches
        Write-Host "Getting standard switches"
        $stantard_switches = $esxi_host | Get-VirtualSwitch -Standard

        Write-Host "Checking standard switches"
        foreach ($stantard_switch in $stantard_switches) {
            $nics = ($stantard_switch).Nic | Sort-Object
            foreach ($nic in $nics) {
                $nic_status = $null
                $nic_status = ($esxcli.network.nic.get.Invoke(@{nicname="$nic"})).LinkStatus
                if ($nic_status -ne "Up") {
                    Write-Host "$esxi_host - $switch_name - $nic - $nic_status" -ForegroundColor Red
                }
                else {
                    Write-Host "$esxi_host - $stantard_switch - $nic - $nic_status"
                }
            }
        }

        ### Get all distributed switches
        Write-Host "Checking distributed switches"
        $dist_switches = $esxcli.network.vswitch.dvs.vmware.list.Invoke()
        foreach ($dist_switch in $dist_switches) {
            $switch_name = $dist_switch.Name
            $nics = ($dist_switch).Uplinks | Sort-Object
            foreach ($nic in $nics) {
                $nic_status = $null
                $nic_status = ($esxcli.network.nic.get.Invoke(@{nicname="$nic"})).LinkStatus
                if ($nic_status -ne "Up") {
                    Write-Host "$esxi_host - $switch_name - $nic - $nic_status" -ForegroundColor Red
                }
                else {
                    Write-Host "$esxi_host - $switch_name - $nic - $nic_status"
                }
            }
        }
    }
    catch {
        Write-Host "ERROR - failed to get NIC status info"
    }
}