首页 > 解决方案 > 从 PowerShell 将哈希表作为参数传递给 ARM 模板

问题描述

我想替换我的参数文件,只用 powershell 给出参数。我的参数文件如下所示:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "subnets": {
      "value": {
        "settings": [
          {
            "name": "firstSubnet",
            "addressPrefix": "10.0.0.0/24"
          },
          {
            "name": "secondSubnet",
            "addressPrefix": "10.0.1.0/24"
          }
        ]
      }
    }
  }
}

我尝试用以下方法覆盖:

-subnets {"settings":[{"name": "firstSubnet","addressPrefix": "10.0.0.0/24"},{"name": "secondSubnet","addressPrefix": "10.0.1.0/24"]}}

但我不断收到错误。使用哈希表作为参数的正确语法是什么?

标签: azurepowershellarm-template

解决方案


您的示例不是哈希表。它只是一个未加引号的 JSON 字符串。

哈希表在 PowerShell 中定义为

@{}

和数组是

@()

所以你会考虑构建如下所示的东西:

-subnets @{ 
             settings = @(
                 @{ 
                     name = 'foo'
                     address = 'bar'
                  }
             ) 
          }

等等。

您可以使用ConvertFrom-JsonConvertTo-Json在 PowerShell 哈希表和数组之间转换 JSON。


推荐阅读