使用 PowerShell 替换 UNC 路径中的服务器名称

Replace server name in UNC path using PowerShell

我正在使用 XML 配置文件,其中包含 UNC 路径:

[xml]$config = Get-Content $file
$UNC = ($config.configuration.unc.value)

其中 $UNC 则等于 \dev.local\share\shared

我需要使用 Powershell 将 $UNC 变量中的服务器名称 dev.local(名称未知)替换为 prod.local

实现此目标的最佳方法是什么?

您可以将 -replace 与正则表达式一起使用:

PS C:\Users\robin> $unc = '\dev.local\share\shared'
PS C:\Users\robin> $server = 'prod.local'
PS C:\Users\robin> $newUnc = $unc -replace '(\\)([a-z\.]+)(\*)', "`$server`"
PS C:\Users\robin> $unc
\dev.local\share\shared
PS C:\Users\robin> $newUnc
\prod.local\share\shared

正则表达式匹配3组:

  1. 初始\
  2. 1. 到下一个 \
  3. 之间的任何内容
  4. 第一个 \ 和之后的所有

第 2 组替换为在此示例中设置为 prod.local 的变量 $server 的值。

替换语法使用双引号,因此 $server 被评估,捕获组周围的反引号使它们可以作为正则表达式的替换。