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:
- 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.
- 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.txt
quale è come sono in grado di vedere i messaggi che sono stati segnalati.