На основе приведенного выше примера «.ps1» (сценарий Windows PowerShell) я написал обычный файл сценария «.bat», чтобы изменить время, в которое запускается виртуальная машина VirtualBox.
Желаемое время начала задается в переменной «TEMPO_START_TIMESTAMP» в формате эпохи. Вы можете получить желаемый эквивалент времени начала работы на сайте http://www.timestampconvert.com/ .
Имя виртуальной машины VirtualBox, которая должна быть запущена, необходимо в переменной «NOME» (та же номенклатура, что и в сценарии «.ps1» выше).
echo off
echo %time%
set NOME="Windows_7_x64"
set TEMPO_CS_2_MS=0
set TEMPO_S_2_MS=000
rem # Starts the VM always on the date 07/11/2014 - 11h58
rem http://www.timestampconvert.com/
set TEMPO_START_TIMESTAMP=1415361480
for /f "delims=" %%x in ('cscript /nologo toEpoch.vbs') do set epoch=%%x
rem %epoch%
set TEMPO_CURRENT_TIMESTAMP=%epoch%
rem set TEMPO_CURRENT_TIMESTAMP=1544518714
set /A TEMPO_TEMP=(%TEMPO_START_TIMESTAMP%-%TEMPO_CURRENT_TIMESTAMP%)
call set TEMPO=%TEMPO_TEMP%%TEMPO_S_2_MS%
rem %TEMPO_TEMP%
rem %TEMPO%
c:\Progra~1\Oracle\VirtualBox\VBoxManage setextradata %NOME% "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
c:\Progra~1\Oracle\VirtualBox\VBoxManage modifyvm %NOME% --biossystemtimeoffset %TEMPO%
c:\Progra~1\Oracle\VirtualBox\VBoxManage startvm %NOME%
Вам также понадобится текущее время в формате epoh, для этого используйте следующий скрипт (сохраните как «toEpoch.vbs», этот скрипт Visual Basic вызывается из скрипта «.bat» выше):
WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())
Чтобы запустить виртуальную машину, просто запустите файл сценария ".bat" выше. Нет необходимости открывать интерфейс «Oracle VM VirtualBox Administration».
Надеюсь, это поможет.
С уважением