I often asked by network team, mac info/vlan info. I ended up running below 3 cmd to explain them the stuff. can we get this in powercli & xls ?
Vmhost/Nic/Nic Mac/nic is part of which vswitch/ vmkernel ports & they IP...
~ # esxcfg-vmknic -l
~ # esxcfg-nics -l
~ #
~ # esxcfg-vswitch -l
Thanks
You can do all that with the Get-EsxCLi cmdlet.
Like this
$esxcli = Get-EsxCli -VMHost MyEsxi
# esxcfg-vmknic -l
foreach($vmk in $esxcli.network.ip.interface.list()){
$esxcli.network.ip.interface.ipv4.get($vmk.Name) |
Select Name,@{N='PortGroup';E={$vmk.Portgroup}},@{N='IP Familiy';E={'IPv4'}},
@{N='IP Address';E={$_.IPv4Address}},
@{N='Netmask';E={$_.IPv4Netmask}},
@{N='Broadcast';E={$_.IPv4Broadcast}},
@{N='MAC';E={$vmk.MACAddress}},
@{N='MTU';E={$vmk.MTU}},
@{N='TSOMSS';E={$vmk.TSOMSS}},
@{N='Enabled';E={$vmk.Enabled}},
@{N='Type';E={$_.AddressType}}
}
# esxcfg-nic -l
$esxcli.network.nic.list() |
where{$_.Name -match 'vmnic'} |
Select Name,@{N='PCI';E={$_.PCIDevice}},
Driver,Link,Speed,Duplex,MACAddress,MTU,Description
# esxcfg-vswitch -l
foreach($vss in $esxcli.network.vswitch.standard.list()){
$vss | Select @{N='Switch Name';E={$_.Name}},
NumPorts,UsedPorts,ConfiguredPorts,MTU,@{N='Uplinks';E={$_.Uplinks -join ','}}
$esxcli.network.vswitch.standard.portgroup.list() |
where{$_.VirtualSwitch -eq $vss.Name} |
Select @{N='Portgroup Name';E={$_.Name}},
VLANID,@{N='Used Ports';E={$_.ActiveClients}},
@{N='Uplinks';E={
($esxcli.network.vswitch.standard.portgroup.policy.failover.get($_.Name) |
Select -ExpandProperty ActiveAdapters) -join ','
}}
}
foreach($vds in $esxcli.network.vswitch.dvs.vmware.list()){
$vds | Select @{N='DVS Name';E={$_.Name}},
NumPorts,UsedPorts,ConfiguredPorts,MTU,@{N='Uplinks';E={$_.Uplinks -join ','}}
$vds.DVPort |
Select DVPortgroupID,InUse,@{N='Client';E={$_.CLient -join ','}}
}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
You can do all that with the Get-EsxCLi cmdlet.
Like this
$esxcli = Get-EsxCli -VMHost MyEsxi
# esxcfg-vmknic -l
foreach($vmk in $esxcli.network.ip.interface.list()){
$esxcli.network.ip.interface.ipv4.get($vmk.Name) |
Select Name,@{N='PortGroup';E={$vmk.Portgroup}},@{N='IP Familiy';E={'IPv4'}},
@{N='IP Address';E={$_.IPv4Address}},
@{N='Netmask';E={$_.IPv4Netmask}},
@{N='Broadcast';E={$_.IPv4Broadcast}},
@{N='MAC';E={$vmk.MACAddress}},
@{N='MTU';E={$vmk.MTU}},
@{N='TSOMSS';E={$vmk.TSOMSS}},
@{N='Enabled';E={$vmk.Enabled}},
@{N='Type';E={$_.AddressType}}
}
# esxcfg-nic -l
$esxcli.network.nic.list() |
where{$_.Name -match 'vmnic'} |
Select Name,@{N='PCI';E={$_.PCIDevice}},
Driver,Link,Speed,Duplex,MACAddress,MTU,Description
# esxcfg-vswitch -l
foreach($vss in $esxcli.network.vswitch.standard.list()){
$vss | Select @{N='Switch Name';E={$_.Name}},
NumPorts,UsedPorts,ConfiguredPorts,MTU,@{N='Uplinks';E={$_.Uplinks -join ','}}
$esxcli.network.vswitch.standard.portgroup.list() |
where{$_.VirtualSwitch -eq $vss.Name} |
Select @{N='Portgroup Name';E={$_.Name}},
VLANID,@{N='Used Ports';E={$_.ActiveClients}},
@{N='Uplinks';E={
($esxcli.network.vswitch.standard.portgroup.policy.failover.get($_.Name) |
Select -ExpandProperty ActiveAdapters) -join ','
}}
}
foreach($vds in $esxcli.network.vswitch.dvs.vmware.list()){
$vds | Select @{N='DVS Name';E={$_.Name}},
NumPorts,UsedPorts,ConfiguredPorts,MTU,@{N='Uplinks';E={$_.Uplinks -join ','}}
$vds.DVPort |
Select DVPortgroupID,InUse,@{N='Client';E={$_.CLient -join ','}}
}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
i exported in csv but for some reasons the o/p shows & as u can see the IP is missing too
Name | PortGroup | IP Familiy | Netmask | Broadcast | MAC | MTU | TSOMSS | Enabled | Type |
vmk0 | Management Network | IPv4 | 255.255.255.0 | 1500 | 65535 | TRUE | STATIC | ||
vmk1 | Management Network | IPv4 | 255.255.255.0 | 1500 | 65535 | TRUE | STATIC | ||
vmk2 | Management Network | IPv4 | 255.255.255.0 | 1500 | 65535 | TRUE | STATIC | ||
vmk0 | NFS | IPv4 | 255.255.255.0 | 1500 | 65535 | TRUE | STATIC | ||
vmk1 | NFS | IPv4 | 255.255.255.0 | 1500 | 65535 | TRUE | STATIC | ||
vmk2 | NFS | IPv4 | 255.255.255.0 | 1500 | 65535 | TRUE | STATIC | ||
vmk0 | Vmotion | IPv4 | 255.255.255.0 | 1500 | 65535 | TRUE | STATIC | ||
vmk1 | Vmotion | IPv4 | 255.255.255.0 | 1500 | 65535 | TRUE | STATIC | ||
vmk2 | Vmotion | IPv4 | 255.255.255.0 | 1500 | 65535 | TRUE | STATIC |
~ # esxcfg-vmknic -l
Interface Port Group/DVPort IP Family IP Address Netmask Broadcast MAC Address MTU TSO MSS Enabled Type
vmk0 Management Network IPv4 xx 255.255.255.0 xx 2c:xx:e0 1500 65535 true STATIC
vmk1 NFS IPv4 xxx 255.255.255.0 xx 00:xx5c 1500 65535 true STATIC
vmk2 Vmotion IPv4 xx 255.255.255.0 xx5 00:xx:eb 1500 65535 true STATIC
~ #
I updated the code, please try again.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Awesome
To make it loop the entire VC & make it more meaningful that way ... can we add the esxi node name in each of these ?
eg current xls export has :- (missing the vmhost name )
Name | PortGroup | IP Familiy | IP Address | Netmask | Broadcast | MAC | MTU | TSOMSS | Enabled | Type |
thanks !