使用 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 组替换为在此示例中设置为 prod.local
的变量 $server
的值。
替换语法使用双引号,因此 $server
被评估,捕获组周围的反引号使它们可以作为正则表达式的替换。
我正在使用 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 组替换为在此示例中设置为 prod.local
的变量 $server
的值。
替换语法使用双引号,因此 $server
被评估,捕获组周围的反引号使它们可以作为正则表达式的替换。