从 Powershell 使用 Azure json 部署模板时如何以交互方式询问管理员密码?

How to ask interactively for admin password when using Azure json deployment template from Powershell?

上下文

我已经下载了 运行 Azure Windows VM 的自动化脚本。 我决定使用 Powershell 脚本来自动化部署。

json 架构的 VM 部分需要 "adminPassword"。缺少,所以我添加了它,并在模板中和参数文件中都引入了一个参数:

template.json

"parameters": {
    "adminPassword": { "type": "securestring" },
...
...
"resources": [
     ...
     ...
     "osProfile": {
         "computerName": "[parameters('virtualMachines_name')]",
         "adminUsername": "myname",
     "adminPassword": "[parameters('adminPassword')]",
     "windowsConfiguration": {
         "provisionVMAgent": true,
         "enableAutomaticUpdates": true
     },
     "secrets": [],
     "allowExtensionOperations": true
},

parameters.json

"parameters": {
    "adminPassword": { "type": "securestring" }

不错的尝试,但不知何故,我深知它不会做任何事情,我的意思是不会交互地询问任何事情。缺少一个或多个步骤...但我卡在这里...

在"official" MS doc中作者干脆把明文密码改成了parameters.json,真是令人不安。参见:placing the clear password into the paramters.json?

我刚测试过它,它就是这样工作的,你能更新你的 azure powershell 吗,它可能已经过时了。

参数:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "test": {
            "value": "1"
        }
    }
}

模板:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "test": {
            "type": "string"
        },
        "testo": {
            "type": "string"
        }
    },
    "resources": []
}

powershell:

New-AzResourceGroupDeployment -ResourceGroupName NetworkWatcherRG -TemplateUri 'https://paste.ee/d/S2wJm/0' -TemplateParameterUri 'https://paste.ee/d/8rW6k/0'

它会提示您输入缺少的参数。如果你使用 TemplateParameterFile

也会发生同样的情况

只需从 *.parameters.json 文件中删除一个参数即可获得提示。例如


template.json 文件


{
   "$schema":"https://schema.management.azure.com/schemas/2015-01- 
             01/deploymentTemplate.json#",
   "contentVersion":"1.0.0.0",
   "parameters":{
      "alertName":{
         "minLength":1,
         "type":"String",
         "metadata":{
            "description":"CPU Percentage alert verifies the cpu usage of virtual machine 
                           and intimates to action group if threshold goes beyond that"
         }
      },
      "alertDescription":{
         "defaultValue":"Virtual Machines alert for CPU Percentage",
         "type":"String",
         "metadata":{
            "description":"Virtual Machines alert for CPU Percentage"
         }
      }
   }
}


parameters.json

{
   "$schema":"https://schema.management.azure.com/schemas/2015-01- 
   01/deploymentParameters.json#",
   "contentVersion":"1.0.0.0",
   "parameters":{
      "alertName":{
         "value":"CPU% Measurement"
      }
   }
}


New-AzResourceGroupDeployment -name "CustomDeployment" -ResourceGroupName test -TemplateFile "C:\Users\sachin.kalia\template.json" -TemplateParameterFile "
C:\Users\sachin.kalia\parameters.json" 

执行上述命令后,它会要求您提示提供 alertDescription。 希望对你有所帮助。