Я пишу скрипт в Powershell для добавления переменных среды файла JSON в другую программу. Основная проблема, которая у меня есть, заключается в том, что мне нужно слово, которое находится между двумя символами, такими как:% hello%, и я хочу заменить его словом и другими символами.
% Hello% должен быть $ Hello.
И слово в строке пути, поэтому я не могу просто заменить строку ..
Я знаю функцию «заменить» или другие функции форматирования в PowerShell, но я понятия не имею, как найти найденное слово между двумя символами, чтобы заменить его тем же словом.
Это мой: config.json
{
"DUMMY_INCLUDEPATH": "%DUMMY_HOME%\\src\\main\\include",
"DUMMY_LIBRARYPATH": "%DUMMY_HOME%\\Test%Platform%
}
это моя функция powershell:
function SetEnvVars {
[string] $pathToConfig = "$($PSScriptRoot)\config.json",
[string] $pathToIntermediateEnvFile = "$($PSScriptRoot)\envvarsSet.properties"
$json = Get-Content "$($pathToConfig)" | ConvertFrom-Json
$sw = [System.IO.StreamWriter] "$($pathToIntermediateEnvFile)"
$json.psobject.Properties | ForEach-Object {
[bool] $bEnvVarWasSet = EnvironmentSetOrIgnore $_.Name $_.Value
if ($true -eq $bEnvVarWasSet) {
$sw.WriteLine("env."+$_.Name+" = `""+$_.Value+"`"")
}
}
$sw.close()
Set-Item env:ERRORLEVEL 0
return 0
}
вывод, который я получаю в моих "envvarsSet.properties", выглядит так:
env.DUMMY_INCLUDEPATH = "%DUMMY_HOME%\src\main\include"
env.DUMMY_LIBRARYPATH = "%DUMMY_HOME%\Test%Platform%"
но мне нужно:
env.DUMMY_INCLUDEPATH = "$DUMMY_HOME\src\main\include"
env.DUMMY_LIBRARYPATH = "$DUMMY_HOME\Test$Platform"
надеюсь на помощь!
привет