PowerShell中的正则表达式扩展

时间:2017-12-08 23:33:41

标签: powershell

我必须遍历大量的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中有更简单的方法吗?

1 个答案:

答案 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.$_"}}