2013-09-15 3 views
2

У меня есть Powershell файл, в котором я строка переменной decalration, как показано нижезамена строк не работает в Powershell скрипт во время выполнения

[string] $global:myExePath = "\\myshare\code\scripts"; 

Я хочу заменить \\myshare\code\scripts с \\mynewshare\code1\psscript во время выполнения путем выполнения Powershell скрипт.

Я использую
Get-Content $originalfile | ForEach-Object { $_ -replace "\\myshare\code\scripts", $mynewcodelocation.FullName } | Set-Content ($originalfile)

Если я execuing { $_ -replace "scripts", $mynewcodelocation.FullName } он работает нормально, но это не работает для { $_ -replace "\\myshare\code\scripts", $mynewcodelocation.FullName }

Что здесь не так?

ответ

3

'\' - специальный символ регулярного выражения, используемый для выхода из другого специального символа. Вам нужно удвоить каждую косую черту, чтобы она соответствовала одной косой чертой.

-replace "\\\\myshare\\code\\scripts",$mynewcodelocation.FullName 

Если вы не знаете, содержание строки вы можете использовать метод выхода, чтобы избежать строку для вас:

$unc = [regex]::escape("\\myshare\code\scripts") 
$unc 
\\\\myshare\\code\\scripts 

-replace $unc,$mynewcodelocation.FullName 
Смежные вопросы