поиск строки и замена всей строки из файла - PullRequest
0 голосов
/ 23 мая 2019

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

Пример: найдите $ FileName в файле и замените эту строку значением $ FileName = truncate_20190523.log из переменной $ key, значение которой получено из переменной $ NewFile.

$LogName = "Test.Log"

$FullPath = "\\etldev\logs"

$NewFile = Get-ChildItem -Path '\\etldev\logs\truncate_*' | Sort-Object LastWriteTime -Descending | Select-Object -First 1 | Select-Object -ExpandProperty Name

$Key = "`$FileName`=$NewFile"

$Line = Get-Content -Path $FullPath\$LogName | Select-String `$FileName` | Select-Object -ExpandProperty Line

(Get-Content -Path $FullPath\$LogName -Raw).Replace('$Line', $Key)| Set-Content -Path $FullPath\$LogName

1 Ответ

1 голос
/ 23 мая 2019

Посмотрите на переменную $ Line. Там должен быть весь лог-файл. Попробуйте вот так:

$Content = Get-Content -Path $Path
$Line = $Content | Select-String -Pattern "Pattern" | Select-Object -ExpandProperty Line
$Index = $Content.IndexOf($Line) 
$Content[$Index]= "Replaced"
$Content | Out-File -FilePath $Path -Force
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...