将VMware环境中的VLAN与UCS环境中的VLAN进行比较。首先,我将VMware中可用的所有VLAN读入$vCenterVLANList
,这将返回一个如下所示的对象:
Portgroup VLANID -------- --- MgmtVLAN 5 ProdVLAN 10 QVLAN 15
(课程的实际列表要长得多)
然后在我的UCS系统中,我要按VLAN ID搜索具有该ID的所有VLAN。一个VLAN ID可以多次存在,但可以使用不同的名称:
Name ID -------- --- MgmtVLAN 5 ProdVLANDC1 10 ProdVLANDC2 10 QVLAN 15 TESTVLAN 20
上面的列表是使用Get-UCSCentralVLANs
获得的。
我现在通常要做的是在foreach
上创建一个$vCenterVLANList
循环,然后为每个端口组搜索Get-UCSCentralVLANs
中的VLAN ID并创建一个新的对象,我将该端口组解析为该对象,VLANID和UCSCentral VLAN名称。
试图学习编写一些更好的PowerShell,所以我希望这也可以在一个衬里中完成,从而导致:
Portgroup VLANID UCSVLAN -------- --- ----- MgmtVLAN 5 MgmtVLAN ProdVLAN 10 ProdVLANDC1 ProdVLAN 10 ProdVLANDC2 QVLAN 15 QVLAN
因此我将建立一个foreach
循环,如:
$MatchedVLANs = @()
foreach ($VLAN in $vCenterVLANList) {
$UCSVLANs = Get-UCSCentralVLANs | Where-Object( $_.ID -eq $VLAN.ID)
foreach ($FoundVLAN in $UCSVLANs) {
$row = "" | select Name, ID, UCSName
$row.Name = $VLAN.Name
$row.ID = $VLAN.ID
$row.UCSName = $FoundVLAN.Name
$MatchedVLANs += $row
}
}