Get the ESXi hostname, MAC address and vmnic of all physical NICs

# This script will get the ESXi hostname, MAC address and vmnic of all physical NICs
# It will loop through all the hosts in the specified cluster and output the results to a CSV file

# Connect to the vCenter server
Connect-VIServer -Server <vcenterserver> -Credential (Get-Credential)

# Specify the cluster name
$cluster = "DCA-Cluster01"

# Get all the hosts in the cluster
$esxihosts = Get-Cluster -Name $cluster | Get-VMHost

# Create an empty array to store the results
$results = @()

# Loop through each host
foreach ($esxihost in $esxihosts) {
    # Get the hostname
    $esxihostname = $esxihost.Name

    # Get all the physical NICs
    $pNICs = Get-VMHostNetworkAdapter -VMHost $esxihost -Physical

    # Loop through each physical NIC
    foreach ($pNIC in $pNICs) {
        # Get the MAC address and vmnic name
        $mac = $pNIC.Mac
        $vmnic = $pNIC.Name

        # Create a custom object with the properties
        $result = [PSCustomObject]@{
            Hostname = $esxihostname
            MAC = $mac
            vmnic = $vmnic
        }

        # Add the object to the array
        $results += $result
    }
}

# Export the array to a CSV file
$results | Export-Csv -Path C:\temp\pNICs.csv -NoTypeInformation

# Disconnect from the vCenter server
# Disconnect-VIServer -Server <vcenterserver> -Confirm:$false
Output from:
"Hostname","MAC","vmnic"
"srv-esx11.mmt.local","b0:7b:26:de:6d:cc","vmnic0"
"srv-esx11.mmt.local","b0:7b:27:de:8d:cd","vmnic1"
"srv-esx11.mmt.local","bc:97:e8:f3:3f:40","vmnic2"
"srv-esx11.mmt.local","bc:97:e5:f3:4f:41","vmnic3"