无法使用适用于Windows的Azure规模集扩展来运行命令

时间:2020-06-02 18:48:27

标签: azure powershell terraform

我正在使用terraform为Windows启动一些Azure Scale集。我已经编写了以下代码,用于更新由terraform创建的VM的动态IP。

publisher = "Microsoft.Compute"
settings = jsonencode({
    commandToExecute = "powershell.exe (((Get-Content -path C:\\Nomad\\agent\\agent.hcl -Raw) -replace '108.98.16.4','${data.azurerm_network_interface.main.private_ip_address}'| Set-Content -Path C:\\Nomad\\agent\\agent.hcl) | sc.exe start Nomad"
    })

但是它抛出以下错误:

错误:Code =“ VMExtensionProvisioningError”消息=“ VM报告了 处理扩展“ joinNomadNodes”时失败。错误信息: \“命令执行完成,但失败,因为它返回了一个 非零退出代码:“ 255”。该命令的错误输出为: “设置内容”无法识别为内部或外部 命令,\ r \ n可操作的程序或批处理文件。\ r \ n'\“ \ r \ n \ r \ n更多 有关故障排除的信息,请访问: https://aka.ms/VMExtensionCSEWindowsTroubleshoot

现在,如果我正在手动运行命令,则其运行不会出现任何错误:

powershell.exe (((Get-Content -path C:\\Nomad\\agent\\agent.hcl -Raw) -replace '108.98.16.4','178.98.16.5'| Set-Content -Path C:\\Nomad\\agent\\agent.hcl) | sc.exe start Nomad"

1 个答案:

答案 0 :(得分:0)

我在“ |”之前添加了转义字符“ ^” ..现在运行正常。

publisher =“ Microsoft.Compute” 设置= jsonencode({ commandToExecute =“ powershell.exe((((Get-Content -path C:\ Nomad \ agent \ agent.hcl -Raw)-replace'108.98.16.4','$ {data.azurerm_network_interface.main.private_ip_address}'^ |设置-Content -Path C:\ Nomad \ agent \ agent.hcl)^ | sc.exe启动Nomad)“ })