gpt4 book ai didi

azure - 使用 New-AzResourceGroupDeployment 将对象数组传递到二头肌模板

转载 作者:行者123 更新时间:2023-12-03 00:54:46 24 4
gpt4 key购买 nike

我有一个二头肌模板,其参数类型为“数组”。我试图给它的数组是一个对象数组。这是一个示例 Bicep,我在其中获取一个数组并以各种方式输出其中的一部分。

param rulesFromJson array

output FirstElement object = rulesFromJson[0]
output inputArray array = rulesFromJson
output FirstElementName string = rulesFromJson[0].name

这是一个示例参数文件:

{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"rulesFromJson": {
"value": [
{
"ruleType": "NetworkRule",
"name": "hello"
},
{
"ruleType": "NetworkRule",
"name": "goodbye"
}
]
}
}
}

如果我使用以下命令运行它,我会得到合理的输出:

New-AzResourceGroupDeployment -TemplateFile .\NetTest.bicep -ResourceGroupName 'ericNetworking' -TemplateParameterFile .\FWPolicyParam.json

DeploymentName : NetTest
ResourceGroupName : ericNetworking
ProvisioningState : Succeeded
Timestamp : 4/29/2022 5:14:06 PM
Mode : Incremental
TemplateLink :
Parameters :
Name Type Value
=============== ========================= ==========
rulesFromJson Array [{"ruleType":"NetworkRule","name":"hello"},{"ruleType":"NetworkRule","name":"goodbye"}]

Outputs :
Name Type Value
================== ========================= ==========
firstElement Object {"ruleType":"NetworkRule","name":"hello"}
inputArray Array [{"ruleType":"NetworkRule","name":"hello"},{"ruleType":"NetworkRule","name":"goodbye"}]
firstElementName String "hello"

但我想使用 -TemplateParameterObject 而不是使用参数文件来提供参数。因此,让我们构造一个与参数文件中相同的对象并将其输入:

$objArray1 = @()
$objArray1 += [pscustomobject]@{ruleType='NetworkRule';name='hello'}
$objArray1 += [pscustomobject]@{ruleType='NetworkRule';name='goodbye'}

New-AzResourceGroupDeployment -TemplateFile .\NetTest.bicep -ResourceGroupName 'ericNetworking' -TemplateParameterObject @{rulesFromJson = $objArray1}

据我所知,这应该做同样的事情。但我得到了一个错误。

New-AzResourceGroupDeployment: 1:24:37 PM - The deployment 'NetTest' failed with error(s). Showing 1 out of 1 error(s).
Status Message: The template output 'FirstElementName' is not valid: The language expression property 'name' doesn't exist, available properties are ''.. (Code:DeploymentOutputEvaluationFailed)
CorrelationId: xxxxxx

DeploymentName : NetTest
ResourceGroupName : ericNetworking
ProvisioningState : Failed
Timestamp : 4/29/2022 5:24:32 PM
Mode : Incremental
TemplateLink :
Parameters :
Name Type Value
=============== ========================= ==========
rulesFromJson Array [{},{}]

Outputs :
DeploymentDebugLogLevel :

我在这里做错了什么?我的输入数组格式是否不正确?我注意到在上面的输出中,rulesFromJson 参数的值包含一个包含两个空白对象的数组,这很奇怪。

最佳答案

当二头肌参数的类型为“object”,并且输入通过 -TemplateParameterObject 传递时,它显然不需要传统的 PowerShell 对象,而是哈希表。

要使用上面的示例二头肌文件,您可以构造一个有效的参数并按如下方式运行它:

$objArray1 = @()
$objArray1 += @{ruleType='NetworkRule';name='hello'}
$objArray1 += @{ruleType='NetworkRule';name='goodbye'}

New-AzResourceGroupDeployment -TemplateFile .\NetTest.bicep -ResourceGroupName 'ericNetworking' -TemplateParameterObject @{rulesFromJson = $objArray1}

由于我有一个命令为我提供了 powershell 对象,因此我最终将其转换为哈希表,如下所述:PSCustomObject to Hashtable

关于azure - 使用 New-AzResourceGroupDeployment 将对象数组传递到二头肌模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72061789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com