我有一个非常简单的替换函数。它遍历 IP 地址列表并替换前 3 个八位字节。似乎它们必须按特定顺序排列,为什么?
加工:
$testips = Import-CSV Test.csv
function change_PROD_IP
{
$PROD_oldIP = $line.NodeIP
$PROD_newIP = $line.NodeIP -replace "10.245.0.","10.165.221." `
-replace "10.245.14.","10.165.233." `
-replace "10.245.15.","10.165.234." `
-replace "10.245.12.","10.165.236." `
-replace "10.245.13.","10.165.237." `
-replace "10.245.1.","10.165.222." `
Add-Content -Path Production_Nodes_Test.csv -Value "$PROD_Oldip, $PROD_newIP"
}
foreach ($line in $testips) {change_PROD_ip}
但是如果我把最后一行放在第一位:
-replace "10.245.1.","10.165.222." `
然后它开始使用这一行来替换10.245.12/13/14
即第三个八位字节以 1 开头的任何内容。为什么会这样,因为它是在 1 之后带有"."的显式定义?
我想你不知道-replace
正在使用正则表达式来替换内容并且.
匹配任何字符的事实。因此,您要么必须使用反斜杠:.
转义点,要么使用 Replace 方法:
$line.NodeIP.Replace("10.245.0.","10.165.221.").Replace(.....