用于创建自动化帐户变量的Azure模板不接受字符串,但整数可以

时间:2018-05-01 21:46:32

标签: azure automation

请在我疯了之前帮助我,咬掉我的一只手臂!我正在尝试使用azure模板在自动化帐户中创建变量。我的小模板正在创建整数变量,但我需要一个字符串。我收到错误消息:

New-AzureRmResourceGroupDeployment:22:24:06 - 资源Microsoft.Automation / automationAccounts / variables 'Start-Stop-VMs-Test / myVariableName'失败,消息为'{   “code”:“BadRequest”,   “message”:“{\”Message \“:\”请求无效。\“,”ModelState \“:{\”variable.properties.value \“:[\”无效的JSON primitive:myVariableValue。\“]}}” }“

顺便说一句,自动化帐户已经存在,我不想创建或重新配置它,所以我想让它远离模板。我希望我的VM模板创建一个字符串变量,DSC配置将使用该变量来完成VM构建。

所以创建一个像这样的整数变量可以正常工作,虽然它对我来说完全没用:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Automation/automationAccounts/variables",
            "name": "Start-Stop-VMs-Test/myVariableName",
            "apiVersion": "2015-10-31",
            "location": "westeurope",
            "properties": {
                "description": "myVariableDesc",
                "value": 17
            }
        }
    ]
}

但是,尝试创建这样的字符串变量时,“Invalid JSON primitive”消息失败:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Automation/automationAccounts/variables",
            "name": "Start-Stop-VMs-Test/myVariableName",
            "apiVersion": "2015-10-31",
            "location": "westeurope",
            "properties": {
                "description": "myVariableDesc",
                "value": "myVariableValue"
            }
        }
    ]
}

我尝试添加另一个属性“type”:“string”但这没有区别,我在https://docs.microsoft.com/en-us/azure/templates/microsoft.automation/automationaccounts/variables中没有看到它。我的自动化帐户当然称为“Start-Stop-VMs-Test”。也许我会尝试找一份公交车司机的工作。

2 个答案:

答案 0 :(得分:1)

"name": "Start-Stop-VMs-Test/myVariableName",

因为Runbook名称只能包含字母数字下划线破折号,因此必须开始带一封信(不支持/)。

请尝试使用此名称" Start-stop-VMs-Test-myVariableName"。

enter image description here

答案 1 :(得分:1)

我似乎偶然发现了答案。如果你想要一个字符串变量,你必须将它放在单引号中,并将所有这些放在json的双引号内。我认为实际上有点奇怪,如果它可以告诉17是一个整数,为什么它不能告诉myVariableValue是一个字符串?因此下面是一个工作模板,请注意变量值周围双引号内的单引号。我希望微软记录下来,我至少失去了一个小时。 “\”myVariableValue \“”也适用。

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Automation/automationAccounts/variables",
            "name": "Start-Stop-VMs-Test/myVariableName",
            "apiVersion": "2015-10-31",
            "location": "westeurope",
            "properties": {
                "description": "myVariableDesc",
                "value": "'myVariableValue'"
            }
        }
    ]
}