Возможна ли замена переменных средствами PowerShell?
Есть файл, назовем его params.ini, имеющий следущее содержание:
{param: variable1} = sample1
{param: variable2} = sample2
{param: variable3} = sample3
Есть каталог Test, с вложенными каталогами и файлами.
Задача, скриптом PowerShell получить значения переменных из файла params.ini и заменить их во всех найденных файлах всех каталогов в папке Test по маске, предположим во всех файлах .sql,.json,*conf.
Помогите пожалуйста.
Ответы (1 шт):
Автор решения: Алексей Семенов
→ Ссылка
$vars = @{}
([regex]"\{param:\s*([\w\d]+)\}\s*=\s*([\w\d]+)").Matches((Get-Content C:\tmp\param.ini -Raw)) | % {
$vars.Add($_.Groups[1].Value, $_.Groups[2].Value)
}
Foreach ($file in (Get-ChildItem c:\tmp\002\* -Recurse -include ('*.sql', '*.json', '*.conf'))){
$vars.Keys | ForEach-Object {
(Get-Content $file.FullName) -replace $_, $vars[$_] | Set-Content $file.FullName
}
}