我有一个非常简单的替换功能.它通过一个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}
Run Code Online (Sandbox Code Playgroud)
但如果我采取最后一行并把它放在第一位:
-replace "10.245.1.","10.165.222." `
Run Code Online (Sandbox Code Playgroud)
然后它开始使用这一行来替换10.245.12/13/14即第三个八位字节以1开头的任何东西.为什么会这样,因为它是带有"."的显式定义.1之后?
我想你不知道-replace使用正则表达式替换内容和.匹配任何字符的事实.所以你要么使用反斜杠来逃避你的点:\.或者你使用Replace方法intead:
$line.NodeIP.Replace("10.245.0.","10.165.221.").Replace(.....
Run Code Online (Sandbox Code Playgroud)