从本地路径获取 UNC 路径的最佳方法
The best way to get UNC path from local path
我有像 C:\Program Files\SomeApp
这样的路径,这个路径驻留在远程主机上,例如\host1
。我只想用管理员共享替换驱动器号,例如C:\
→ C$
并向此路径添加带有主机名的 UNC 前缀,最终得到如下结果:\host1\C$\Program Files\SomeApp
。盘符可以有任何值,所以我们不能硬编码。
我是按照以下方式完成的:
$dir = "C:\Program Files\SomeApp"
$hostIp = "10.1.1.1"
$dir -replace '.:',"\$hostIP$($(Split-Path -Qualifier $dir).TrimEnd(':'))$"
不过,看起来有点不清楚。请提出更好的解决方案。
只需将字符串开头的驱动器号和冒号替换为主机部分和驱动器号后跟 $
。其余路径将保持不变。
$dir -replace '^(.):', "\$hostIp\`$"
转义 </code> 中的 <code>$
可防止 PowerShell 尝试将对捕获组的引用扩展为变量。
我有像 C:\Program Files\SomeApp
这样的路径,这个路径驻留在远程主机上,例如\host1
。我只想用管理员共享替换驱动器号,例如C:\
→ C$
并向此路径添加带有主机名的 UNC 前缀,最终得到如下结果:\host1\C$\Program Files\SomeApp
。盘符可以有任何值,所以我们不能硬编码。
我是按照以下方式完成的:
$dir = "C:\Program Files\SomeApp"
$hostIp = "10.1.1.1"
$dir -replace '.:',"\$hostIP$($(Split-Path -Qualifier $dir).TrimEnd(':'))$"
不过,看起来有点不清楚。请提出更好的解决方案。
只需将字符串开头的驱动器号和冒号替换为主机部分和驱动器号后跟 $
。其余路径将保持不变。
$dir -replace '^(.):', "\$hostIp\`$"
转义 </code> 中的 <code>$
可防止 PowerShell 尝试将对捕获组的引用扩展为变量。