Подтвердить что ты не робот

Поиск и замена в файлах не выполняется

Я пытаюсь найти и заменить в файле, используя следующий подход.

Function Find-Replace ($FileFullpath, $FindString, $ReplacementString) {

   Get-Content $FileFullpath | 
   Foreach-Object {$_ -replace $FindString, $ReplacementString } |  
   Set-Content $FileFullpath

}

Find-Replace "c:\program files (x86)\MyProj\web.config" $OldServiceName $NewServiceName

Но я всегда получаю ошибку.

Set-Content: процесс не может получить доступ к файлу 'c:\program files (x86)\MyProj\web.config ', потому что он используется другим процессом.

Файл не открывается нигде. Я думаю, что Get-content еще не выпустил файл.

Почему это происходит? Как найти и заменить в том же файле без проблем?

4b9b3361

Ответ 1

Вы не можете читать и писать в тот же файл во время его открытия, Get-Content открывает файл для чтения, и в то же время Set-Content пытается записать на него. Поместите вызов Get-Conetnt в круглые скобки, он откроет файл, прочитает его и закроет.

(Get-Content $FileFullpath) | ...