azure 如何使用Terraform变量将命名参数传递给powershell脚本

wljmcqd8  于 2023-05-07  发布在  Shell
关注(0)|答案(2)|浏览(196)

我试图找出正确的方法来传递terraform变量值到我的PowerShell脚本。
当我尝试使用Microsoft扩展部署脚本时,脚本失败。下面是我的Terraform脚本:

resource "azurerm_virtual_machine_extension" "test" {
    name = "testt"
    virtual_machine_id = azurerm_virtual_machine.example.id
    publisher = "Microsoft.Compute"
    type = "CustomScriptExtension"
    type_handler_version = "1.9"            
    protected_settings = <<SETTINGS    
{    
"commandToExecute": "powershell -command \"[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('${base64encode(file("shell.ps1"))}')) | Out-File -filepath shell.ps1\" && powershell -ExecutionPolicy Unrestricted -File shell.ps1 -value1 ${var.value1} -value2 ${var.value2}"
    }    
SETTINGS    
}

下面是Powershell脚本:

param(

  [string]$value1,
  [string]$value2
)

我遇到的错误:
“message”:“参数:术语“param”不能识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查\r\n名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

elcex8rz

elcex8rz1#

你试过这样的东西吗?

param(
  [string]$value1 = ${var.value1},
  [string]$value2 = ${var.value2}
)
vxqlmq5t

vxqlmq5t2#

resource "null_resource" "run_powershell" {
  provisioner "local-exec" {
    command = "powershell.exe -ExecutionPolicy Bypass -File myscript.ps1 -Value1 ${var.value1} -Value2 ${var.value1}"
  }
}

在PS脚本中:

param(
  [string]$value1,
  [string]$value2
)

相关问题