是否以key = value格式引用az vm运行命令参数?

时间:2018-10-08 10:16:26

标签: bash azure azure-cli

我正在运行以下命令:

az vm  run-command invoke -g my-group --name my-vm  --command-id RunShellScript  --scripts 'echo "$@"' --parameters 'foo=bar' 'color=red' 'thing=car'

输出为:

{
"value": [
{
  "code": "ProvisioningState/succeeded",
  "displayStatus": "Provisioning succeeded",
  "level": "Info",
  "message": "Enable succeeded: \n[stdout]\nbar red car\n\n[stderr]\n",
  "time": null
  }
 ]
}

哪里有问题? 我不知道如何引用值。

似乎它们在运行时在env中可用:

`az vm  run-command invoke -g my-group --name my-vm  --command-id RunShellScript  --scripts 'env | grep -E "foo|color|thing"' --parameters 'foo=bar' 'color=red' 'thing=car'

输出:

{
"value": [
{
  "code": "ProvisioningState/succeeded",
  "displayStatus": "Provisioning succeeded",
  "level": "Info",
  "message": "Enable succeeded: \n[stdout]\nfoo=bar\nthing=car\ncolor=red\n\n[stderr]\n",
  "time": null
  }
 ]
}

如果我想使用这样的东西:

az vm  run-command invoke -g my-group --name my-vm  --command-id RunShellScript  --scripts "for i ; do echo ${i} >> vars.file; done" --parameters 'foo=bar' 'color=red' 'thing=car'

然后使用:

source vars.file

现在可以使用,因为参数被解析为键和值,并且只有值被重定向到vars.file

我当然可以做这样的事情:

az vm  run-command invoke -g my-group --name my-vm  --command-id RunShellScript  --scripts 'env | grep -E "EXPORTED_"' --parameters 'EXPORTER_foo=bar' 'EXPORTED_color=red' 'EXPORTED_thing=car'

,但是它过于笼统且混乱。

谢谢

1 个答案:

答案 0 :(得分:0)

对于命令az vm run-command invoke,您发布的结果正确,它只是显示为字符串。因此它没有可读性。但是,如果在Azure门户中运行,您将了解结果。

enter image description here

您可以参考我发布的链接,以格式化要放入命令中的参数。而且,如果只想显示命令的结果,则可以添加参数--query value[*].message--query value[0].message

更新

Azure CLI命令只能使用提供的简单参数执行一些简单的bash命令。 run scripts in the Linux VM有串行方式。您可以选择一种优于Azure CLI的方式。