如何使用Powershell将\\ server \ Share $替换为D:

时间:2019-06-21 10:53:14

标签: powershell

我正在尝试收集长目录路径的报告,以提供给拥有它们的每个用户,以便他们可以使用它并使该文件夹路径变短。

如何将\\ server \ Share $替换为X :?我尝试了以下内容,但没有任何变化。仅当我只执行一个字符或一个字符串“ \\服务器”,而不执行组合“ \\ server \ Share $”时,我才能得到结果,有人可以告诉我我做错了什么。

$results= "\\\server\Share$\super\long\directory\path\"
$usershare="\\\server\Share$"
$Results | ForEach-Object { $_.FullName = $_.FullName -replace "$usershare", 'X:' }  

我需要的输出是用户将在他们的系统中看到的输出。

X:\super\long\directory\path\

1 个答案:

答案 0 :(得分:4)

由于$userShare变量包含具有special meaning in Regular Expressions(并且-replace使用正则表达式)的字符,因此您需要[Regex]::Escape()该字符串。

首先要注意的是,您以三个反斜杠开始UNC路径,其中反斜杠应该只有两个。 接下来是您的$results变量只是声明为字符串,并且可能应该是Get-ChildItem命令的结果。

我猜你想做的是这样的:

$uncPath   = "\\server\Share$\super\long\directory\path\"    #"# the UNC folder path
$usershare = "\\server\Share$"

$results = Get-ChildItem -Path $uncPath | ForEach-Object {
    $_.FullName -replace ([regex]::Escape($usershare)), 'X:'
}

希望有帮助