将数组参数值转换为逗号分隔的字符串
Convert array parameter values to comma separated string
我正在使用 ARM 模板将 Vms 部署到 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 脚本参数,目前需要一个数组。如果我让 ARM 合作,我可以轻松地将其更改为逗号分隔的字符串。
# SolrCloudSetup.ps1 -----------------------
param (
[array] [Parameter(Mandatory=$true)] $solrNodeIps
)
有没有办法将此数组参数转换为逗号分隔的字符串,以便我可以通过 CustomScriptExtension 将其传递到我的 powershell 脚本?
string() 函数是您的最佳选择。您可以将其与 replace 功能结合使用来实现您的需要:
"[replace(replace(string(parameters('testArray')), '[', ''), ']', '')]"
在你的情况下它会更难,因为你的数组不仅仅是一堆字符串,所以我会使用一个循环来 "convert" 你的数组到一堆字符串。或者更好地将您的数组转换为:
[
"10.0.10.1",
"10.0.10.2",
"10.0.10.3"
]
你可以像这样使用它:
"[parameters('nodePrivateIps')[copyIndex()]]"
我正在使用 ARM 模板将 Vms 部署到 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 脚本参数,目前需要一个数组。如果我让 ARM 合作,我可以轻松地将其更改为逗号分隔的字符串。
# SolrCloudSetup.ps1 -----------------------
param (
[array] [Parameter(Mandatory=$true)] $solrNodeIps
)
有没有办法将此数组参数转换为逗号分隔的字符串,以便我可以通过 CustomScriptExtension 将其传递到我的 powershell 脚本?
string() 函数是您的最佳选择。您可以将其与 replace 功能结合使用来实现您的需要:
"[replace(replace(string(parameters('testArray')), '[', ''), ']', '')]"
在你的情况下它会更难,因为你的数组不仅仅是一堆字符串,所以我会使用一个循环来 "convert" 你的数组到一堆字符串。或者更好地将您的数组转换为:
[
"10.0.10.1",
"10.0.10.2",
"10.0.10.3"
]
你可以像这样使用它:
"[parameters('nodePrivateIps')[copyIndex()]]"