PowerShell 导入 CSV 和替换 - 操作顺序



我有一个非常简单的替换函数。它遍历 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(.....

最新更新