Как я могу заменить \\ server \ Share $ на D: используя powershell - PullRequest
1 голос
/ 21 июня 2019

Я пытаюсь собрать отчет о длинных путях к каталогам, чтобы предоставить каждому пользователю, у которого они есть, чтобы они могли использовать его и сделать пути к этим папкам короткими.

Как заменить \\ server \ Share $ на X:?Я попробовал ниже, но ничего не меняется.Я могу получить результаты, только если я использую только один символ или одну строку "\\ server", но не комбинацию "\\ 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 Ответ

4 голосов
/ 21 июня 2019

Поскольку переменная $userShare содержит символы со специальным значением в регулярных выражениях -replace использует Regex), необходимо [Regex]::Escape() эту строку.

Первое, на что нужно обратить внимание, это то, что вы начинаете UNC-пути с трех обратных слешей, где у вас должно быть только two . Далее, ваша $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:'
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...