bugfix> powershell > 投稿

次のようなファイルがあります:

<Parameter Name="WebImage" Value="web:${BuildNumber}" />
<Parameter Name="ApiImage" Value="api:${BuildNumber}" />

${xxx} の発生を置き換えたい  環境変数 xxx を持つファイル内 。このファイルは、任意の数の環境変数を参照できます。それらは事前に知られていません。

次のようなことを試みています:

(Get-Content .\Cloud.xml) -replace "\$\{(\w+)\}", "$([Environment]::GetEnvironmentVariable('$1'))"

ただし、次のようになります:

<Parameter Name="WebImage" Value="web:" />
<Parameter Name="ApiImage" Value="api:" />

GetEnvironmentVariable  私ができるので、呼び出しが動作します:

(Get-Content .\Cloud.xml) -replace "\$\{(\w+)\}", "$([Environment]::GetEnvironmentVariable('BuildNumber'))"

そしてそれは動作します。ザ・ $1  私ができるので呼び出しが動作します:

(Get-Content .\Cloud.xml) -replace "\$\{(\w+)\}", '$1'

次のようになります:

<Parameter Name="WebImage" Value="web:BuildNumber" />
<Parameter Name="ApiImage" Value="api:BuildNumber" />

ただし、この2つを組み合わせることはできません。関数が解決される順序と関係があると思います。