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

我正在使用ARM模板将VM部署到Azure。在我的参数文件中,我有:

"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()]]"

这有用吗?我正在尝试做同样的事情,但它说复制索引不应该在这个位置…开始一个问题,分享链接