Come salvare lo stato di una VM del SO guest VirtualBox su un logout dell'host Windows?


0

Sto eseguendo un SO guest Ubuntu VM in modalità senza testa su un host Windows 7. Ho scritto uno script batch che utilizza VBoxManage per avviare o salvare lo stato della VM in base all'argomento passato. Posso avviare bene la VM inserendo un collegamento allo script nella mia cartella di avvio, ma ho difficoltà a sospendere la VM al logout.

Ho provato alcuni metodi diversi:

  1. La creazione di una voce degli script di disconnessione dell'utente nell'Editor criteri di gruppo locale (gpedit.msc) esegue il mio script, ma il processo VBoxManage segnala che la VM non è in esecuzione. Suppongo che il processo di disconnessione stia uccidendo la VM prima che il mio script possa accedervi.
  2. La creazione di un'attività tramite l'Utilità di pianificazione che attiva l'evento 7002, che mi viene detto è l'evento di disconnessione, esegue lo script, ma VBoxManage riporta quanto segue:

VBoxManage.exe: errore: impossibile creare l'oggetto VirtualBox!

VBoxManage.exe: errore: codice E_ACCESSDENIED (0x80070005) - errore di accesso negato generale (informazioni estese non disponibili)

VBoxManage.exe: errore: molto probabilmente, il server COM VirtualBox non è in esecuzione o non è stato avviato.

Esiste un modo migliore per sospendere automaticamente lo stato di una macchina virtuale quando ci si disconnette da Windows?


Il contenuto dello script batch:

@echo off

setlocal

rem list of VMs to start/stop
set vm_list=Ubuntu

set action=%1
if not "%action%" == "start" if not "%action%" == "stop" exit /B

set command="C:\Program Files\Oracle\VirtualBox\VboxManage.exe"
set logfile="C:\bin\vm_log.txt"

if exist %logfile% echo.>> %logfile%

echo %date% %time%>> %logfile%

for %%A in (%vm_list%) do (
    if "%action%" == "start" (
        echo Starting %%A>> %logfile% 2>&1
        %command% startvm %%A --type headless >> %logfile% 2>&1
    ) else if "%action%" == "stop" (
        echo Suspending %%A>> %logfile% 2>&1
        %command% controlvm %%A savestate >> %logfile% 2>&1
    )   
)

endlocal

Ho l'output dei comandi reindirizzato a vm_log.txtquale è come sono in grado di vedere i messaggi che sono stati segnalati.


Saresti in grado di pubblicare il tuo script Batch? Sembra che VirtualBox stesso abbia chiuso prima che lo script fosse in grado di eseguire il comando di salvataggio dello stato / dello snapshot?
Jake Gould

1
Ho pubblicato il contenuto dello script per la tua richiesta. Immagino che entrambi i metodi che ho provato abbiano VirtualBox chiuso prima che il mio script venga eseguito.
Pak,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.