2014-11-25 2 views
0

Я борюсь с ниже код и это то, что я получаю:заменить строки с переменными с помощью PowerShell

"FirstName":"$value","LastName":"$value"...... 

Но, это то, что я хотел бы достичь:

"FirstName":"${strClientName}","LastName":"${strSurName}" ..... 

Так как могу ли я заставить powershell вернуть желаемое значение из HashTable вместо этого: $value

Проблема заключается в том, что $ в значениях hashtabl е. Если я удалю его из хеш-таблицы, он отобразится правильно, но значение $ должно отображаться на выходе.

Код:

$str = '"FirstName":"f_name","LastName":"l_name","AskCatalog":false,"Nuteres":12","ZipCode":"1234","City":"LA BOUVERIE","Street":"Rue Pasteur","StreetNr":"34","Phone":"12345678","Email":"[email protected]"' 

$list = @{FirstName="${strName}"; 
      LastName="${strSurName}"; 
      ZipCode="${strZipCode}"; 
      City="${strCity}"; 
      Street="${strStreet}"; 
      StreetNr="${strNumber}"} 

foreach($item in $list.GetEnumerator()) 
{ 
    $key = $item.Key 
    $value = $item.Value 
    $pattern = '("'+$key+'":)".*?"' 
    $changed = "`$1`"`$value`"" 
    $result = $str = $str -replace $pattern, $changed 
} 

Write-Host $result 

ответ

1

Не уверен, что я полностью понимаю, но вот попробовать:

$str = '"FirstName":"f_name","LastName":"l_name","AskCatalog":false,"Nuteres":12","ZipCode":"1234","City":"LA BOUVERIE","Street":"Rue Pasteur","StreetNr":"34","Phone":"12345678","Email":"[email protected]"' 

$list = @{FirstName='${strName}'; 
     LastName='${strSurName}'; 
     ZipCode='${strZipCode}'; 
     City='${strCity}'; 
     Street='${strStreet}'; 
     StreetNr='${strNumber}'} 

foreach($item in $list.GetEnumerator()) 
{ 
    $key = $item.Key 
    $value = $item.Value 
    $pattern = '("'+$key+'":)".*?"' 
    $changed = "`$1`"$value`"" 
    $result = $str = $str -replace ($pattern, $changed) 
} 

Write-Host $result 

Результат я получаю

"FirstName":"${strName}","LastName":"${strSurName}","AskCatalog":false,"Nuteres":12","ZipCode":"${strZipCode}","City":"${strCity}","Street":"${strStreet}","StreetNr":"${strNumber}","Phone":"12345678","Email":"[email protected]" 
+0

Я попытался удалить ('), но он возвращает пустую строку. Так оно и есть. Почему вы получили такой результат? Что вы изменили в коде? –

+0

в основном эта строка: '$ changed =" '$ 1'" $ value' "" ' –

+0

О, а также список $, обратите внимание, что он имеет одинарные кавычки вместо двухместных. В любом случае попробуйте с полным кодом. Вы должны увидеть те же результаты, что и я. –

Смежные вопросы