我的一部分代码
$OldSub1 = "192.168.1.*"
$OldSub2 = "192.168.2.*"
$OldSub3 = "192.168.3.*"
$OldSub4 = "192.168.4.*"
$OldIp = Get-NetIpAddress | where {
($_.IPAddress -like $OldSub1) -or
($_.IPAddress -like $OldSub2) -or
($_.IPAddress -like $OldSub3) -or
($_.IPAddress -like $OldSub4)
}
if ($OldIp.IPAddress -eq $null) {write "Null"}
$OldIp
我想使用一个数组,但我不能理解如何,这样我就没有错误,但Oldip采取的价值
$OldSubNets = @(
"192.168.1.*",
"192.168.2.*"
)
foreach ($i in $OldSubNets){
if (-not($i -eq $null)){
$OldIp = Get-NetIpAddress | where { $_.IPAddress -like $i }
}
}
$OldIp
1条答案
按热度按时间mgdq6dx11#
Where-Object
(where
)块中。$true
。如果您使用
-match
而不是-like
,则可以简化解决方案:这允许使用regex,它允许您使用交替(|
)一次测试多个模式:$oldSubnetsRegex
接收字符串'^(?:192\.168\.1\.|192\.168\.2\.)'
,显然也可以直接构造这样的正则表达式;有关正则表达式的解释和使用它的选项,请参见this regex101.com page。还要注意在
Where-Object
调用中使用了simplified syntax。