Azure 将数组参数值转换为逗号分隔的字符串
我正在使用ARM模板将VM部署到Azure。在我的参数文件中,我有:Azure 将数组参数值转换为逗号分隔的字符串,azure,azure-resource-manager,arm-template,Azure,Azure Resource Manager,Arm Template,我正在使用ARM模板将VM部署到Azure。在我的参数文件中,我有: "nodePrivateIps": { "value": [ { "IpAddress": "10.0.10.1" }, { "IpAddress": "10.0.10.2" }, { "IpAddress": "10.0.10.3" } ] }, 我能够在模板中使用此数组,并具有: "privateIPAddress": "[parameters('nodePrivateIps')[copy
"nodePrivateIps": {
"value": [
{ "IpAddress": "10.0.10.1" },
{ "IpAddress": "10.0.10.2" },
{ "IpAddress": "10.0.10.3" }
]
},
我能够在模板中使用此数组,并具有:
"privateIPAddress": "[parameters('nodePrivateIps')[copyIndex()].IpAddress]",
问题是现在我需要使用CustomScriptExtension将相同的数组传递给我的powershell脚本,但它似乎不喜欢数组参数
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.4",
"settings": {
"fileUris": [
"[concat(parameters('_artifactsLocation'),'/SolrCloudSetup.ps1', parameters('_artifactsLocationSasToken'))]"
],
"commandToExecute": "[concat('powershell.exe -ExecutionPolicy Unrestricted -Command .\\SolrCloudSetup.ps1 ', parameters('nodePrivateIps'))]"
}
}
这是我的powershell脚本参数,当前需要一个数组。我可以很容易地将其更改为逗号分隔的字符串,如果我得到手臂的配合
# SolrCloudSetup.ps1 -----------------------
param (
[array] [Parameter(Mandatory=$true)] $solrNodeIps
)
是否有方法将此数组参数转换为逗号分隔的字符串,以便我可以通过CustomScriptExtension将其传递到我的powershell脚本?有一个函数是您最好的选择。您可以将该功能与替换功能结合起来,以实现所需的功能:
"[replace(replace(string(parameters('testArray')), '[', ''), ']', '')]"
在你的例子中,这会更困难,因为你的数组不仅仅是一堆字符串,所以我会使用一个循环将你的数组“转换”成一堆字符串。或者最好将阵列转换为:
[
"10.0.10.1",
"10.0.10.2",
"10.0.10.3"
]
您可以这样使用它:
"[parameters('nodePrivateIps')[copyIndex()]]"
这有用吗?我正在尝试做同样的事情,但它说复制索引不应该在这个位置…开始一个问题,分享链接