Возможна ли замена переменных средствами 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
    }
}


→ Ссылка