您可以使用:
vboxmanage showhdinfo "PathToYourVMDK"
它會告訴你在輸出的最後一行的UUID。
然後你就可以啓動虛擬機使用的UUID,而不是它的名字與
vboxmanage startvm YourUUID
所以,基本上你需要的命令是:
vboxmanage startvm $(vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}')
如果你不使用bash
,你將需要通過像這樣反推代替$()
:
vboxmanage startvm `vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}'`
更新
如果您在編寫腳本和調試腳本時遇到問題,請按照下列步驟操作。
首先...獲得基本showhdinfo
命令的工作。所以,試試這個:
vboxmanage showhdinfo "PathToYourVMDK"
UUID: c3166b8a-3c21-4531-927c-030f3cfb9728
Parent UUID: base
State: created
Type: normal (base)
Location: ...
Storage format: VDI
Format variant: fixed default
Capacity: 8192 MBytes
Size on disk: 8192 MBytes
In use by VMs: UbuntuVM (UUID: 77743eca-e338-471c-b824-60c5c5c22b6f) <-- THIS ONE
其次......現在就來看看最後一行,該UUID可以與vboxmanage startvm
使用,因此嘗試複製這和粘貼這樣的:
vboxmanage startvm 77743eca-e338-471c-b824-60c5c5c22b6f
這應該啓動VM。
第三......下一次檢查是thaet的awk
正確地提取該UUID,所以讓我們嘗試
vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}'
77743eca-e338-471c-b824-60c5c5c22b6f
這看起來是正確的,現在把它全部變成腳本:
#!/bin/bash -xv
UUID=$(vboxmanage showhdinfo "PathToYourVMDK" | awk -F" |)" '/^In use/{print $(NF-1)}')
echo UUID:$UUID
vboxmanage startvm $UUID
莫非
那些至少投票給我的人解釋了爲什麼?我看不出有什麼問題。事實上,我認爲這是完全有效的,並被正確地問道。其他人甚至將它添加到她的最愛。 –