Подход регулярного выражения был бы здесь очевиден. Сопоставьте все от начала строки до и включая «заполнитель» с группой захвата, заменяющей текст после группы захвата, оставляя оставшуюся строку без изменений.
(Get-Content $file) -replace "(.*gateway.public.host.*)placeholder", '$1ReplacementText'
Хост других регулярных выражений будет работать здесь какхорошо.
Однако мы также можем использовать power в PowerShell с командлетами ConvertFrom-Json
и ConvertTo-Json
$json = '{
"gateway.public.host": "http://placeholder.ourdomain.com"
}'
$jsonObject = $json | ConvertFrom-Json
$jsonObject."gateway.public.host" = $jsonObject."gateway.public.host" -replace "placeholder", "holdplacer"
$jsonObject | ConvertTo-Json -Depth 5
, которые дадут вам
{
"gateway.public.host": "http://holdplacer.ourdomain.com"
}
Да, я признаю, что там больше кода. В зависимости от того, с чего вы начинаете, и где вы хотите закончить, ваш код будет чище с помощью этого метода.