我正在使用Azure Pipelines進行一些自動化操作,在一項作業中,我希望從JSON中迭代配置WebApp設定。我正在使用Powershell,但我正在努力做一些類似于Python中的作業:
import json
varJson = json.load(''{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}''')
for i in varJson:
print(f'az webapp config appsettings set -g resourceGroup -n appName -settings {i}="{varJson[i]}"'/span>)
我希望的輸出結果是:
az webapp config appsettings set -g resourceGroup -n appName --settings key1="value1"
...
我試著使用物件,但它讓我感到困惑:
我試著使用物件。
$Json = @'
{
"key1"/span>: "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4".
}
'@ | ConvertFrom-Json
ForEach-Object -InputObject $Json {
Write-Host $_. PSObject.Properties.Name。
}
Write-Host $Json
我可以在PowerShell中做一些與我在python中做的類似的事情嗎?或者有一個更簡單的方法?
uj5u.com熱心網友回復:
試試下面的方法:
$fromJson = @'
{
"key1"/span>: "value1",
"key2": "value2"。
"key3": "value3",
"key4": "value4".
}
'@ | ConvertFrom-Json
foreach ($prop in $fromJson.psobject.Properties) {
@"
az webapp config appsettings set -g resourceGroup -n appName --settings "$($prop. Name)=$($prop.Value)"
"@
注意:
.psobject是PowerShell在任何型別的物件上提供的內在成員,它是一個豐富的反射源;其.Properties屬性回傳一個描述當前物件屬性的物件集合,每個物件都有一個.Name和.Value屬性。和你的Python代碼一樣,
az命令列只是列印成一個字串,而不是被呼叫。- 要執行實際的呼叫,移除
@"和"@行(整個結構是PowerShell here-string)。
- 要執行實際的呼叫,移除
"$($prop.Name)=$($prop.Value)"結果是類似于"key1=value1",PowerShell會將其不加引號傳遞給az;只有當value部分包含空格時,PowerShell會對-整個-引數加雙引號。如果
az需要在其命令列上參考部分,例如key1="value 1",最簡單的解決方案是通過cmd.exe /c呼叫:cmd /c "az webapp config appsettings set -g resourceGroup -n appName --settings $($prop. Name)=`"$($prop.Value)`"如果你想避開這些復雜的問題,可以考慮安裝
Native模塊(Install-Module Native),其ie函式會自動為你執行部分參考(如果值部分包含空格)以及其他功能,因此你可以只關注PowerShell的語法:ie az webapp config appsettings set -g resourceGroup -n appName --settings "$($prop. Name)=$($prop.Value)"。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309294.html
標籤:
上一篇:PostgreSQL。函式不存在
