如何将命令输出设置为env。在Windows的CMD变量?

时间:2019-03-18 15:50:53

标签: windows terraform azure-cli

我已将Azure存储密钥保存在密钥库中,并且我想使用Azure cli检索密钥并将其设置为env。在我运行Terraform脚本之前,在cmd窗口中添加了变量。

下面列出的命令不起作用,谁能告诉我需要更改什么?

set ARM_ACCESS_KEY=$(az keyvault secret show --name terraform-backend-key --vault-name myKeyVault)

初始化错误

enter image description here

Main.tf

variable "count" {}
variable "prefix" {
default="RG"
 }
terraform {
backend "azurerm" {
container_name       = "new"
storage_account_name  = "mfarg"
key                  = "terraform.tfstate"
}}
resource "azurerm_resource_group" "test" {
count ="${var.count}"
name     = "${var.prefix}-${count.index}"
location = "West US 2"
}

命令提示符输出

enter image description here

2 个答案:

答案 0 :(得分:2)

要在Windows中设置环境变量,建议您使用PowerShell命令来实现它。在PowerShell中,您可以这样做:

$env:ACCESS_KEY=$(az keyvault secret show -n terraform-backend-key --vault-name myKeyVault --query value -o tsv)

此外,在您的CLI命令中,您无法直接显示机密,它会输出整个机密,而不仅仅是您想要的访问密钥。查看两个命令之间的区别。

enter image description here

答案 1 :(得分:0)

一个较晚的答案,但对仍然存在相同问题的人可能有用。 此方法将在Windows命令提示符cmd中工作。

For /f %%i in ('az keyvault secret show --vault-name "Your-KeyVault-Name" --name "Your-Secret-Name" --query "value"') do set "password=%%i"

现在,如果您只运行“ echo%password%”,您将看到您的秘密值。 请记住,az命令必须在''之间,例如'az keyvault secret等。