我必须遍历大量的IP循环,并且我能够轻松地在bash中执行此操作,但在尝试在PowerShell中执行此操作时,我发现我不知道如何执行类似的操作。
在bash中我做了以下事情:
for ip in 10.98.{7..65}.{0..255}; do
echo "some text and a $ip";
done
但是,在PowerShell中我完成了以下操作:
$ipprefix='10.98';
For ($i=7; $i -le 65; $i++) {
For ($j=0; $j -le 255; $j++) {
Write-Host "some text and a $ipprefix.$i.$j";
}
}
在PowerShell中有更简单的方法吗?
答案 0 :(得分:4)
理想情况下,bash代码必须展开两个循环,因此您拥有的PowerShell基本相同。也就是说,您可以在Powershell中嵌套两个范围来实现相同的目标。
例如:
1..3 | % {$c = $_; 4..6 | % {$d = $_; Write-Host "a.b.$c.$d"}}
给出:
a.b.1.4
a.b.1.5
a.b.1.6
a.b.2.4
a.b.2.5
a.b.2.6
a.b.3.4
a.b.3.5
a.b.3.6
由此,您可以适应上述问题。
如果你愿意,你可以稍微缩短一点,并失去一些可读性,如:
1..3 | % {$c = $_; 4..6 | % {Write-Host "a.b.$c.$_"}}