azure - ARM模板:如何以数组格式读取输出结果
问题描述
我在stackoverflow上发布了一些问题,并感谢那些花时间回答的人。尽管它存在文档,但我仍然面临与输出功能相关的问题。
基本上我了解格式为string时如何检索数据。不幸的是,当数据采用数组格式时,对我来说看起来更困难。
"outputs": {
"keyVaultName": {
"type": "string",
"value": "[variables('keyVaultName')]"
},
"websitesname": {
"type": "array",
"copy": {
"count": "[length(variables('webSitesName'))]",
"input": {
"name": "[variables('webSitesName')[copyIndex()].name]"
}
}
}
}
然后我这样做:
$deploymentResult = New-AzResourceGroupDeployment -Name $deploymentName -ResourceGroupName
$ResourceGroupName-TemplateFile $TemplateFile
$vaultName = $deploymentResult.Outputs.keyVaultName.Value
$arrayWebsitesName = $deploymentResult.Outputs.websitesname.Value
我需要从返回的数组中提取值。在powershell中我希望使用类似的东西
- $arrayWebsitesName[0] 获取 AppService-Prod-CentralUS
- $arrayWebsitesName[\1] 获取 AppService-Prod-EastUS
我相信有一些与转换有关的东西,我尝试了 convertto-json 但没有成功。感谢您的帮助!
解决方案
从部署返回的变量类型websitesname
是JArray
.
PS> $deploymentResult.Outputs.websitesname.Value.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False JArray Newtonsoft.Json.Linq.JContainer
为了获得这些值,您可以进行如下调用:
$arrayWebsitesName = $deploymentResult.Outputs.websitesname.Value
$ids = $arrayWebsitesName.ToString() | ConvertFrom-Json
$ids[0].name
$ids[1].name
将 JArray 转换为 JSON 字符串,然后将 JSON 字符串转换为 PowerShell 数组可能不是最有效的,但我通常不处理大型数组并且性能不是问题(完成工作)。
推荐阅读
- java - FlinkCEP的执行时间
- r - 如何为R中具有非唯一值的人获取唯一键
- python - 在 CSV 中获取带条件的最大值
- java - spring cloud aws 项目不再有活跃的所有者了吗?
- kubernetes - 更新锁失败:无法在端点上完成操作
- arrays - 在数组中查找与另一个数组具有相同索引的字符串
- python - 同一代码中的一站式图形如何重叠?
- ruby - 解析器的未定义方法“deprecation_reason”
- selenium-webdriver - 尝试输入文本字段值时出现 Serenity 错误“分离事件”
- sql-server - 请求的 OLE DB 提供程序 Microsoft.ACE.OLEDB.12.0 未注册(SSIS 从 Access 源填充 SQL 表)