展開シナリオでは、構成ファイルの名前を変更する必要があります。すべての環境 (Dev.Test、Dev.Prod、Integration、Prod) の構成ファイルがあります。たとえば、Dev.Test 環境用の場合、web.config は web.Dev.Test.config と呼ばれます。ターゲット マシンで、Powershell を使用してファイルの名前を元の名前に戻す必要があります (つまり、web.Dev.Test.config から web.config に)。
$test = "web.Dev.Prod.config"
$environment = $test | Select-String -Pattern ".*\.(?<environment>(Dev.Test|Dev.Prod|Prod|Integration))\.config" | select -expand Matches | foreach {$_.groups["environment"].value}
if ($test -match "Dev.Prod")
{
$environment = "Dev.Prod"
}
$environment
$newFileName = $test.Remove($test.IndexOf($environment),$environment.Length + 1)
$newFileName
これに関する問題は、正規表現が Dev.Prod 環境を見つけられず、代わりに Prod を返すことです。これが、if ステートメントを導入した理由です。Powershell でファイルの名前を変更するよりエレガントな方法があるかどうか疑問に思っていました。