您好,我正在创建一个脚本,该脚本创建了接口ips的历史记录,但是我在嵌套循环方面遇到了麻烦。
for($r = 0; $r -lt $iface.Count; $r++){
for($m = 0; $m -lt $iface.Count; $m++){
if($ifaceold[$r] -match $iface[$m]){
Write-Host "name true" " " $ifaceold[$r] " " $iface[$m]
if($ifaceold[$r] -match $ifaceip[$m]){
Write-Host "ip true" " " $ifaceold[$r] " " $iface[$m] " " $ifaceip[$m]
}else{
Write-Host "ip false" " " $ifaceold[$r] " " $iface[$m] " " $ifaceip[$m]
}
}else{
Write-Host "name false" " " $ifaceold[$r] " " $iface[$m]
}
}
}
Result:
name true Ethernet 6 10.10.2.5 Ethernet 6
ip false Ethernet 6 10.10.2.5 Ethernet 6 10.10.2.1
name false Ethernet 6 10.10.2.5 Ethernet 5
name false Ethernet 6 10.10.2.5 Ethernet 4
name false Ethernet 5 10.10.1.1 Ethernet 6
name true Ethernet 5 10.10.1.1 Ethernet 5
ip true Ethernet 5 10.10.1.1 Ethernet 5 10.10.1.1
name false Ethernet 5 10.10.1.1 Ethernet 4
name false Ethernet 4 192.168.77.53 Ethernet 6
name false Ethernet 4 192.168.77.53 Ethernet 5
name true Ethernet 4 192.168.77.53 Ethernet 4
ip true Ethernet 4 192.168.77.53 Ethernet 4 192.168.1.53
由于某种原因,第二个循环无法按预期工作。例如,几乎$ iface等于以太网6,它将与具有以太网6,以太网4,以太网5作为值的$ ifaces阵列匹配。如果$ ifaceold与$ iface匹配,那么它将转至下一个if序列,该序列对我而言是无效的。我现在想将以太网6 ip与$ ifaceip值进行匹配,如果它们匹配,则只需将输出作为true即可。但是正如您所看到的,它与名称匹配3次,但每个接口的ip仅匹配一次。谁能为我指出为什么我的第二个循环不起作用的正确方向?
答案 0 :(得分:0)
好吧,我知道了我该怎么做。在与接口名称匹配并开始比较ip地址之后,第二个循环必须在if情况之内
for($r = 0; $r -lt $iface.Count; $r++){
for($m = 0; $m -lt $iface.Count; $m++){
if($ifaceold[$r] -match $iface[$m]){
Write-Host "name true" " " $ifaceold[$r] " " $iface[$m]
for($q = 0; $q -lt $iface.Count; $q++){
if($ifaceold[$r] -match $ifaceip[$q]){
Write-Host "ip true" " " $ifaceold[$r] " = " $iface[$q] " " $ifaceip[$q]
}else{
Write-Host "ip false" " " $ifaceold[$r] " = " $iface[$q] " " $ifaceip[$q]
}
}
}else{
Write-Host "name false" " " $ifaceold[$r] " = " $iface[$m]
}
}
}
Result:
name true Ethernet 6 10.10.2.5
ip false Ethernet 6 10.10.2.5 Ethernet 6 10.10.2.1
ip false Ethernet 6 10.10.2.5 Ethernet 5 10.10.1.1
ip false Ethernet 6 10.10.2.5 Ethernet 4 192.168.1.53
name true Ethernet 5 10.10.1.1
ip false Ethernet 5 10.10.1.1 Ethernet 6 10.10.2.1
ip true Ethernet 5 10.10.1.1 Ethernet 5 10.10.1.1
ip false Ethernet 5 10.10.1.1 Ethernet 4 192.168.1.53
name true Ethernet 4 192.168.77.53
ip false Ethernet 4 192.168.77.53 Ethernet 6 10.10.2.1
ip false Ethernet 4 192.168.77.53 Ethernet 5 10.10.1.1
ip true Ethernet 4 192.168.77.53 Ethernet 4 192.168.1.53