Сообщение об ошибке, которое я получал, было
The regular expression pattern C:\Project\SharedLib\Shared is not valid.
At C:\temp\StackOverflow.ps1:6 char:9
+ ($line) -replace $currentPath, '\\ServerName\websites$\Stable ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (C:\Project\SharedLib\Shared:String) [], RuntimeException
+ FullyQualifiedErrorId : InvalidRegularExpression
Это говорит мне, что строка C: \ Project \ SharedLib обрабатывается как шаблон RegEx - и нам нужно выйтиоператоры. (Вот почему вы часто увидите, что обратные слеши удваиваются - они экранированы.)
Не нужно помнить, что они все есть - вы можете использовать [regex] :: escape ($ currentPath), чтобы сделать это за вас,
Get-ChildItem "*.txt" -Filter *.txt |
Foreach-Object {
foreach($line in Get-Content $_) {
$currentPath = [System.IO.Path]::GetDirectoryName($line)
($line) -replace [regex]::escape($currentPath), '\\ServerName\websites$\Stable\Release\' | Set-Content $line
}
}