J'ai un appsettings.json
que je voudrais transformer avec un script PowerShell dans une tâche PowerShell du pipeline de sortie de VSTS. (BTW je déploie un netstandard 2 Api à IIS). Le JSON est structuré comme suit :
{
"Foo": {
"BaseUrl": "http://foo.url.com",
"UrlKey": "12345"
},
"Bar": {
"BaseUrl": "http://bar.url.com"
},
"Blee": {
"BaseUrl": "http://blee.url.com"
}
}
Je veux remplacer BaseUrl et, si elle existe, les valeurs UrlKey de chaque section qui sont Foo, Bar et Blee. (Foo:BaseUrl, Foo:UrlKey, Bar:BaseUrl, etc.)
J'utilise la structure JSON suivante pour contenir les nouvelles valeurs :
{
"##{FooUrl}":"$(FooUrl)",
"##{FooUrlKey}":"$(FooUrlKey)",
"##{BarUrl}":"$(BarUrl)",
"##{BleeUrl}":"$(BleeUrl)"
}
Jusqu'à présent, j'ai le script suivant :
# Get file path
$filePath = "C:\mywebsite\appsettings.json"
# Parse JSON object from string
$jsonString = "$(MyReplacementVariablesJson)"
$jsonObject = ConvertFrom-Json $jsonString
# Convert JSON replacement variables object to HashTable
$hashTable = @{}
foreach ($property in $jsonObject.PSObject.Properties) {
$hashTable[$property.Name] = $property.Value
}
# Here's where I need some help
# Perform variable replacements
foreach ($key in $hashTable.Keys) {
$sourceFile = Get-Content $filePath
$sourceFile -replace $key, $hashTable[$key] | Set-Content $filePath
Write-Host 'Replaced key' $key 'with value' $hashTable[$key] 'in' $filePath
}