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

标签 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\

最佳答案

由于$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:'
}

希望能有所帮助

关于powershell - 如何使用Powershell将\\server\Share $替换为D:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56702021/

相关文章:

arrays - 在循环中填充对象并将整个数组输出到 CSV

powershell - 在 Powershell 中,如何从对象返回的数组中获取值?

powershell - 仅从 PowerShell 中的路径获取驱动器号

powershell - 使用 powershell 获取当月的天数

regex - PowerShell-查找和修改字符串中的多个文本

powershell - 使用 PowerShell 安装计划任务时失败时重试

powershell - 观察本地文件夹的变化并将它们上传到 SFTP 服务器

powershell - 算术运算符的问题

powershell - 在调用 Add-AzureCertificate 之前确定 .pfx 文件是否需要密码

powershell - 在 Powershell 4.0 中将 PSRemotingJob 对象作为参数传递