Поиск и замена строки в названии и содержимом файлов и папок через powershell
Хочу автоматизировать рутинные действия с помощью скрипта на PowerShell. Использую старый работающий скрипт для поиска строк:
Get-ChildItem -Path 'D:\git\*' -Recurse | Select-String -Pattern 'String'
Пытаюсь доработать его, чтобы все найденные строки он менял, например, с String на NewString.
$PathToDirectory='D:\git\*'
$FirstString='String'
$SecondString='NewString'
Get-ChildItem -Path $PathToDirectory -Recurse | Select-String -Pattern $FirstString | ForEach-Object {
$filePath = $_.Path
$lineNumber = $_.LineNumber
$newLine = $_.Line -replace $FirstString, $SecondString
$content = Get-Content $filePath
$content[$lineNumber - 1] = $newLine
$content | Set-Content $filePath
}
В дебаге видно, что путь неправильный в ForEach (C:\Users\User\InputStream
). Если создать/скопировать папку по этому пути, то будет ругаться, что это не файл, а директория. Если указать путь до файла в этой папке, то скрипт отрабатывает, но ни название ни строки в файле/папке не меняются. Буду рад любой помощи.