我正在运行以下命令:
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'
,但是它过于笼统且混乱。
谢谢
答案 0 :(得分:0)
对于命令az vm run-command invoke
,您发布的结果正确,它只是显示为字符串。因此它没有可读性。但是,如果在Azure门户中运行,您将了解结果。
您可以参考我发布的链接,以格式化要放入命令中的参数。而且,如果只想显示命令的结果,则可以添加参数--query value[*].message
或--query value[0].message
。
更新
Azure CLI命令只能使用提供的简单参数执行一些简单的bash命令。 run scripts in the Linux VM有串行方式。您可以选择一种优于Azure CLI的方式。