簡體   English   中英

az vm以key = value格式引用的運行命令參數?

[英]az vm run-command parameters in key=value format referencing?

我正在運行以下命令:

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'

,但解決方案過於籠統和混亂。

謝謝

對於az vm run-command invoke ,您發布的結果是正確的,並且僅顯示為字符串。 因此它沒有可讀性。 但是,如果在Azure門戶中運行,您將了解結果。

在此處輸入圖片說明

您可以參考我發布的鏈接,以格式化要在命令中放入的參數。 如果只想顯示命令的結果,則可以添加--query value[*].message--query value[0].message

更新

Azure CLI命令可以僅使用提供的簡單參數執行一些簡單的bash命令。 在Linux VM中有一些串行方式來運行腳本 您可以選擇一種優於Azure CLI的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM