PowerShell Import-CSV和replace - 操作顺序

Alf*_*man 0 powershell

我有一个非常简单的替换功能.它通过一个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之后?

Mar*_*ndl 5

我想你不知道-replace使用正则表达式替换内容和.匹配任何字符的事实.所以你要么使用反斜杠来逃避你的点:\.或者你使用Replace方法intead:

$line.NodeIP.Replace("10.245.0.","10.165.221.").Replace(.....
Run Code Online (Sandbox Code Playgroud)