VirtualBox: Zeit-Synchronisation deaktivieren

Praktisch als Ergänzung zum Beitrag VMware Workstation Player: Zeit-Synchronisation deaktivieren, diesmal allerdings für VirtualBox, eine Anleitung zum Deaktivieren des Abgleichs von Datum und Uhrzeit.

Im Gegensatz zu VMware genügt zum Deaktivieren der Zeit-Synchronisation ein Befehl:

VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

Die virtuelle Maschine sollte selbstverständlich zum Zeitpunkt des Ausführens des Befehls beendet sein. Idealerweise sollte VirtualBox ebenfalls geschlossen sein, andernfalls kann es vorkommen, das die Änderung nicht übernommen wird.

Beim Starten der virtuellen Maschine wird die aktuelle Uhrzeit vom Host übernommen. Stellt man nun in der virtuellen Maschine ein anderes Datum bzw. eine andere Uhrzeit ein, so läuft diese dann weiter bis zum nächsten Neustart.

Nicht übersehen darf man die Zeit-Synchronisation die innerhalb der virtuellen Maschine seitens des dort installierten Betriebssystems stattfindet. Bei Windows und Linux beispielsweise der Abgleich via NTP über das Internet.

Möchte man bereits ab dem Startvorgang der virtuellen Maschine ein anderes Datum mitgeben, so muss dies vorab über den Befehl

VBoxManage modifyvm "VM name" --biossystemtimeoffset <ms>

realisiert werden. Das setzt voraus, das man die Differenz in Millisekunden kennt. Wie man diese Zeit ermitteln kann, wird in diesem Beitrag erläutert:

Winaero – How to set the BIOS date in VirtualBox

Wichtig zu wissen ist, das der Offset fest in die Konfigurationsdatei der virtuellen Maschine eingetragen wird, d.h. es wird dann immer mit diesem Wert gestartet, der (natürlich) dann nicht mehr zum gewünschten Zeitpunkt passt und praktisch jedesmal vor dem Start aktualisiert werden muss.

Als Batch-Skript für Windows sieht das Ganze, gemeint ist Sync deaktivieren, Differenz ermitteln und VM starten, so aus:

@echo off

rem Konfiguration

 set VMname=Debian
 set VMdate=08/01/2018

 set VBoxPath=C:\Program Files\Oracle\VirtualBox

rem Zeit-Differenz von heute bis zum definierten Zeitpunkt ermitteln

 powershell ([datetime]'%VMdate%' - [datetime]::Now) | find "TotalMilliseconds :" > temp.txt

 set /p MS=< temp.txt
 del temp.txt /q

 rem Variable beschneiden ("TotalMilliseconds :" und
 rem alles nach dem Komma, inkl. dem Komma selbst entfernen, da die Zeit als Ganzzahl angegeben werden muss)

  set MS=%MS:~20,-5%

rem Zeit-Sychronisation mit dem Host deaktivieren

 "%VBoxPath%\VBoxManage" setextradata "%VMname%" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

rem Offset setzen

 "%VBoxPath%\VBoxManage" modifyvm "%VMname%" --biossystemtimeoffset "%MS%"

rem Virtuelle Maschine starten

 "%VBoxPath%\VBoxManage" startvm "%VMname%"

Quellen:

Oracle VM VirtualBox – User Manual – 8.8. VBoxManage modifyvm (–biossystemtimeoffset <ms>)

Oracle VM VirtualBox – User Manual – Chapter 9. Advanced topics – 9.14.4. Disabling the Guest Additions time synchronization

Update 17.11.2021

Es sieht so aus, als ob Oracle mittlerweile ein Limit bei “–biossystemtimeoffset” von maximal 127 Tagen (10.972.800.000 ms) eingebaut hat. Gibt man größere Werte an, werden diese darauf limitiert. Ein Beispiel:

Von heute (17.11.2021) zum 01.08.2018 (wie im Skript) ist eine Differenz von 1204 Tagen. Startet man eine virtuelle Maschine mit dem obigen Skript, so wird als Datum der 13.07.2021 gesetzt.

Ändert man im Skript beispielsweise auf den 01.01.2021 (320 Tage Differenz) so “landet” man ebenfalls beim 13.07.2021.

Kleinere Werte als 127 Tage, z.B. der 01.09.2021 (77 Tage Differenz) funktionieren.

Im Changelog und im Forum habe ich auf die Schnelle dazu nichts gefunden (oder es übersehen), in der Hilfe steht auch nichts von einer Grenze oder einem Limit.

24 Kommentare

  • Hallo,
    mit welchen Betriebssystemen ist diese Lösung lauffähig?
    Thomas

  • Der VboxManage-Befehl ansich ist plattformunabhängig. Das Skript ist Windows-only, erfolgreich getestet unter Windows 8.1 und 10. Vmtl. geht auch Windows 7, wurde allerdings nicht probiert.

  • Hallo
    wo und wie muss ich die Batchdatei einbinden damit mein System ( Win7 ) in virtual box immer mit dem von mir gewünschtem Datum startet?
    Gruß Klaus

  • Das Skript an einem gewünschten Ort ablegen und den VM-Namen und das Start-Datum anpassen.
    Es wird kein spezieller Ort oder ehöten Rechte benötigt.
    Einzig muss man daran denken, das man die VM dann immer über das Skript und nicht direkt aus VirtualBox heraus startet.

  • danke für deine Antwort.
    Ich habe jetzt dein Skript als CMD Datei ausgeführt. ich habe “VMname” durch den Namen der Maschine “SKS” im ganzen Skrpit ersetzt. das Skript wird auch ausgeführt glaube ich zumindest weil ich bekomme keine Fehlermeldung, aber die BOX startet nicht automatisch. Was mache ich falsch?

  • Im Skript muss nur im Abschnitt “Konfiguration” bei der Variabeln “VMname” der Name eingetragen werden:

    rem Konfiguration

    set VMname=Debian <- Den Namen der VM eintragen
    set VMdate=08/01/2018

    Sonst muss eigentlich nichts geändert werden, außer man hat VirtualBox an anderer Stelle installiert als per Vorgabe vorgesehen. In einem solchen Fall muss noch der Pfad angepasst werden:

    set VBoxPath=C:Program FilesOracleVirtualBox

    Zur weiteren Eingrenzung was evtl. schief läuft kann man am Ende des Skript schlicht ein “Pause” einfügen und es dann nochmal ausführen und sich die Meldungen ansehen.

  • Hallo Andy,
    habe dein Script runtergezogen und kann damit auch meine Virtuelle Maschine starten. Nur leider läuft das WindowsDatum einfach weiter…

  • Stephan Hagedorn

    Moin Andy,
    vielen Dank für die Lösung. Mir ist aufgefallen, dass die Zeit nicht so geschickt gekürzt wird. Hier ”

    set MS=%MS:~20,-5%

    “wird immer 5 stellen gekürzt . Dabei egal ob nach dem Komma. Mein Vorschlag ist die PowerShell schon die Zeit ohne Komma zu berechnen. So hätte ich es mit gedacht ”

    powershell [math]::ceiling(([datetime]’%VMdate%’ – [datetime]::Now).TotalMilliseconds) > temp.txt

    “. Damit brauchts auch die Kürzung nicht mehr.

  • Hallo Andy,
    ich habe mir erlaubt deinen (tollen) Script etwas zu übersetzen und für den Start einer PIWIS-VM anzupassen – natürlich mit Verweis auf deinen Blog, ich hoffe das ist so in Ordnung.

    https://www.planet-9.com/threads/piwis-2-virtual-machine-troubleshooting.245411/#post-2165845

    Das wird gerne so benutzt und nun würden auch gerne Mac-User das einsetzen, es sitzt jemand an einer Anpassung an Unix/MacOS und es läuft wohl schon soweit, ausser der Übergabe der Parameter.

    “I’m using a MacBook and I took the version you posted and ported it to run under macOS in a Bourne shell script. I’m currently having issues using the VirtualBox commands. I can get the VM startup automation working – either with or without creating an Oracle VM Manager session.

    The problems I’m having are with the setextradata and modifyvm commands. While I’m not seeing errors from issuing the commands, they do not seem to be acting on the VM. Executing them in an alternate fashion (as above with startvm) seems to create an Oracle VM Manager session for each one.”

    Meine Unix/MacOS Kenntnisse sind recht limitiert – eventuell wurdest du oder jemand der den Blog liest/kennt schonmal mit der Frage konfrontiert und kann etwas dazu beitragen?

    Vielen Dank und Gruss
    Klaus

  • Hier der MacOS Script:

    #! /bin/sh​

    #set -x​

    #set VMname=PIWIS​
    #set VMdate=09/11/2019​

    VMname=PIWIS​

    #VMdate=09/11/2019​
    VMdate=(date -j -f “%a %d %b %Y %T %Z” “Wed 11 Sep 2019 11:17:49 EST” +”%s”)​



    #set VBoxPath=C:Program FilesOracleVirtualBox​
    #VBoxPath=”/Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM “​
    VBoxPath=”/usr/local/bin/VirtualBox”​

    echo “nVMname: $VMname, VMdate: $VMdate, VBoxPath: $VBoxPathn”​


    #CurrentDateMs=date +%s%N | cut -b1-10​
    CurrentDateMs=date +%s​

    echo “n CurrentDateMs: $CurrentDateMsn”​


    # Date-Difference today to defined date​
    #powershell ([datetime]’%VMdate%’ – [datetime]::Now) | find “TotalMilliseconds :” > temp.txt​
    delta=$((VMdate – CurrentDateMs))​

    #set /p MS=< temp.txt​
    #del temp.txt /q​


    #=======================================================================================​

    # cut Variable ("TotalMilliseconds :" and delete after,)​

    #set MS=%MS:~20,-5%​


    # Time-Sync with host disable​

    #"%VBoxPath%VBoxManage" setextradata "%VMname%" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1​

    #cmd="$VBoxPath VBoxManage setextradata $VMname "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1"​


    #cmd="/Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM –comment Porsche VBoxManage –setextradata $VMname "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1"​


    #cmd="$VBoxPath –comment Porsche VBoxManage setextradata $VMname "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1"​

    cmd="$VBoxPath –comment Porsche VBoxManage setextradata $VMname "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1"​

    echo "ncmd is: $cmdn"​
    #$cmd &​


    #——————————————————————————————–​

    # Set Offset​

    #"%VBoxPath%VBoxManage" modifyvm "%VMname%" –biossystemtimeoffset "%MS%"​
    #($VBoxPath VBoxManage modifyvm $VMname –biossystemtimeoffset $delta)​


    #cmd="/Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM –comment Porsche VBoxManage –modifyvm $VMname –biossystemtimeoffset $delta –no-startvm-errormsgbox"​

    #cmd="$VBoxPath VBoxManage modifyvm $VMname –biossystemtimeoffset $delta"​

    cmd="/Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM –comment Porsche VBoxManage –modifyvm $VMname –biossystemtimeoffset $delta"​

    #cmd="$VBoxPath –comment Porsche VBoxManage –modifyvm $VMname –biossystemtimeoffset $delta"​

    cmd="$VBoxPath –comment Porsche VBoxManage modifyvm $VMname biossystemtimeoffset $delta"​

    echo "ncmd is: $cmdn"​
    #$cmd &​


    #cmd="/Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM –comment Porsche VBoxManage –modifyvm $VMname –biossystemtimeoffset $delta –no-startvm-errormsgbox"​
    #cmd="$VBoxPath VBoxManage modifyvm $VMname –biossystemtimeoffset $delta"​

    #——————————————————————————————–​

    # Start the virtual machine​

    #"%VBoxPath%VBoxManage" startvm "%VMname%"​
    #($VBoxPath VBoxManage startvm $VMname)​



    #cmd="$VBoxPath VBoxManage –startvm $VMname –type headless"​
    #cmd="$VBoxPath startvm $VMname –type headless"​

    #cmd="/Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM –comment Porsche –startvm PIWIS –no-startvm-errormsgbox"​


    # This works!​

    # This invocation starts the VM (within the currently running Oracle VM Manager session – if one is running)​
    cmd="/Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM –comment Porsche VBoxManage –startvm $VMname –no-startvm-errormsgbox"​



    # This invocation starts a new Oracle VM Manager session and doesn't 'start' the VM​
    #cmd="$VBoxPath –comment Porsche startvm $VMname no-startvm-errormsgbox"​

    echo "ncmd is: $cmdn"​
    $cmd &​


    exit​

  • Bei mir klappt das ganze nicht mit der Batch-Datei. (unter Windows 10)
    Ich habe mittels Pause den batchvorgang immer wieder unterbrochen und die einzelnen Schritte geprüft.

    Die Temp-Datei wird erstellt, aber wenn ich reinschaue steht da nichts drin?!?!

    Am Ende kommt dann:

    Usage:

    VBoxManage modifyvm
    [–name ]
    [–groups , …]
    [–description ]
    [–ostype ]
    [–iconfile ]
    [–memory ]
    [–pagefusion on|off]
    [–vram ]
    [–acpi on|off]
    [–ioapic on|off]
    [–hpet on|off]
    [–triplefaultreset on|off]
    [–apic on|off]
    [–x2apic on|off]
    [–paravirtprovider none|default|legacy|minimal|
    hyperv|kvm]
    [–paravirtdebug [, …]]
    [–hwvirtex on|off]
    [–nestedpaging on|off]
    [–largepages on|off]
    [–vtxvpid on|off]
    [–vtxux on|off]
    [–pae on|off]
    [–longmode on|off]
    [–ibpb-on-vm-exit on|off]
    [–ibpb-on-vm-entry on|off]
    [–spec-ctrl on|off]
    [–l1d-flush-on-sched on|off]
    [–l1d-flush-on-vm-entry on|off]
    [–mds-clear-on-sched on|off]
    [–mds-clear-on-vm-entry on|off]
    [–nested-hw-virt on|off]
    [–cpu-profile “host|Intel 80[86|286|386]”]
    [–cpuid-portability-level ]
    [–cpuid-set ]
    [–cpuid-remove ]
    [–cpuidremoveall]
    [–hardwareuuid ]
    [–cpus ]
    [–cpuhotplug on|off]
    [–plugcpu ]
    [–unplugcpu ]
    [–cpuexecutioncap ]
    [–rtcuseutc on|off]
    [–graphicscontroller none|vboxvga|vmsvga|vboxsvga]
    [–monitorcount ]
    [–accelerate3d on|off]
    [–accelerate2dvideo on|off]
    [–firmware bios|efi|efi32|efi64]
    [–chipset ich9|piix3]
    [–bioslogofadein on|off]
    [–bioslogofadeout on|off]
    [–bioslogodisplaytime ]
    [–bioslogoimagepath ]
    [–biosbootmenu disabled|menuonly|messageandmenu]
    [–biosapic disabled|apic|x2apic]
    [–biossystemtimeoffset ]
    [–biospxedebug on|off]
    [–system-uuid-le on|off]
    [–boot none|floppy|dvd|disk|net>]
    [–nic none|null|nat|bridged|intnet|hostonly|
    generic|natnetwork]
    [–nictype Am79C970A|Am79C973|Am79C960|
    82540EM|82543GC|82545EM|
    virtio]
    [–cableconnected on|off]
    [–nictrace on|off]
    [–nictracefile ]
    [–nicproperty name=[value]]
    [–nicspeed ]
    [–nicbootprio ]
    [–nicpromisc deny|allow-vms|allow-all]
    [–nicbandwidthgroup none|]
    [–bridgeadapter none|]
    [–hostonlyadapter none|]
    [–intnet ]
    [–nat-network ]
    [–nicgenericdrv ]
    [–natnet |default]
    [–natsettings [],[],
    [],[],
    []]
    [–natpf [],tcp|udp,[],
    ,[],]
    [–natpf delete ]
    [–nattftpprefix ]
    [–nattftpfile ]
    [–nattftpserver ]
    [–natbindip ]
    [–natdnspassdomain on|off]
    [–natdnsproxy on|off]
    [–natdnshostresolver on|off]
    [–nataliasmode default|[log],[proxyonly],
    [sameports]]
    [–macaddress auto|]
    [–mouse ps2|usb|usbtablet|usbmultitouch]
    [–keyboard ps2|usb]
    [–uart off| ]
    [–uartmode disconnected|
    server |
    client |
    tcpserver |
    tcpclient |
    file |
    ]
    [–uarttype 16450|16550A|16750]
    [–lpt off|
    ]
    [–lptmode ]
    [–guestmemoryballoon ]
    [–vm-process-priority default|flat|low|normal|high]
    [–audio none|null|dsound]
    [–audioin on|off]
    [–audioout on|off]
    [–audiocontroller ac97|hda|sb16]
    [–audiocodec stac9700|ad1980|stac9221|sb16]
    [–clipboard-mode disabled|hosttoguest|guesttohost|
    bidirectional]
    [–draganddrop disabled|hosttoguest|guesttohost|
    bidirectional]
    [–vrde on|off]
    [–vrdeextpack default|]
    [–vrdeproperty ]
    [–vrdeport ]
    [–vrdeaddress ]
    [–vrdeauthtype null|external|guest]
    [–vrdeauthlibrary default|]
    [–vrdemulticon on|off]
    [–vrdereusecon on|off]
    [–vrdevideochannel on|off]
    [–vrdevideochannelquality ]
    [–usbohci on|off]
    [–usbehci on|off]
    [–usbxhci on|off]
    [–usbrename ]
    [–snapshotfolder default|]
    [–teleporter on|off]
    [–teleporterport ]
    [–teleporteraddress ]
    [–teleporterpassword ]
    [–teleporterpasswordfile |stdin]
    [–tracing-enabled on|off]
    [–tracing-config ]
    [–tracing-allow-vm-access on|off]
    [–usbcardreader on|off]
    [–autostart-enabled on|off]
    [–autostart-delay ]
    [–recording on|off]
    [–recordingscreens all| [ …]]
    [–recordingfile ]
    [–recordingvideores ]
    [–recordingvideorate ]
    [–recordingvideofps ]
    [–recordingmaxtime ]
    [–recordingmaxsize ]
    [–recordingopts [, …]]
    [–defaultfrontend default|]

    VBoxManage.exe: error: Drücken Sie eine beliebige Taste . . .

  • Das VBoxManage seine Hilfe ausgibt ist klar, wenn die Variable “MS” aufgrund der fehlenden Angaben aus der “temp.txt” leer oder nicht vorhanden ist.
    Bleibt die Frage, warum die “temp.txt” leer ist.
    Mal der Reihe nach manuell folgende Befehle in einer Eingabeaufforderung eingeben:

    set VMdate=08/01/2018
    powershell ([datetime]'%VMdate%' - [datetime]::Now) | find "TotalMilliseconds :"

    Bei “set…” sollte es keine Ausgabe geben, beim Powershell-Befehl kommt dann eine Differenz raus die z.B. so oder so ähnlich aussehen sollte:

    TotalMilliseconds : -102325448428,204

    Ich vermute jetzt mal, das dieser Aufruf bei dir nicht klappt und in Folge die “temp.txt” leer ist.
    Falls dem so ist, dann nur mal

    powershell ([datetime]'%VMdate%' - [datetime]::Now)

    ausführen. Die Ausgabe sollte so oder so ähnliche aussehen:

    Days : -1184
    Hours : -7
    Minutes : -48
    Seconds : -5
    Milliseconds : -426
    Ticks : -1023256854263163
    TotalDays : -1184,32506280459
    TotalHours : -28423,8015073101
    TotalMinutes : -1705428,09043861
    TotalSeconds : -102325685,426316
    TotalMilliseconds : -102325685426,316

    Die Zahlen variieren natürlich.

  • Wenn ich die befehle so einfach eingebe wie du beschrieben hast, dann geht es!

    Direkt aus der Eingabeaufforderung rauskopiert:

    [B]Microsoft Windows [Version 10.0.19043.1288]
    (c) Microsoft Corporation. Alle Rechte vorbehalten.

    C:\Users\Frank>set VMdate=08/01/20

    C:\Users\Frank>powershell ([datetime]’%VMdate%’ – [datetime]::Now) | find “TotalMilliseconds :”
    TotalMilliseconds : -39210915207,3436

    C:\Users\Frank>powershell ([datetime]’%VMdate%’ – [datetime]::Now)

    Days : -453
    Hours : -19
    Minutes : -55
    Seconds : -32
    Milliseconds : -960
    Ticks : -392109329609399
    TotalDays : -453,830242603471
    TotalHours : -10891,9258224833
    TotalMinutes : -653515,549348998
    TotalSeconds : -39210932,9609399
    TotalMilliseconds : -39210932960,9399

    C:\Users\Frank>
    [/B]

    Also das geht!

    Wenn ich das Script ausführe, dann sehe ich dass beim Powershell-Befehl das Datum “komisch” ausssieht:

    C:\Users\Lathy\Desktop>rem @echo off

    C:\Users\Lathy\Desktop>rem Konfiguration

    C:\Users\Lathy\Desktop>set VMname=Win10

    C:\Users\Lathy\Desktop>set VMdate=28/10/2021

    C:\Users\Lathy\Desktop>set VBoxPath=C:\Program Files\Oracle\VirtualBox

    C:\Users\Lathy\Desktop>pause
    Drücken Sie eine beliebige Taste . . .

    C:\Users\Lathy\Desktop>rem Zeit-Differenz von heute bis zum definierten Zeitpunkt ermitteln

    C:\Users\Lathy\Desktop>powershell [math]::ceiling(([datetime]ÔÇÖ28/10/2021ÔÇÖ ÔÇô [datetime]::Now).TotalMilliseconds) 1>c:\temp\temp.txt

    C:\Users\Lathy\Desktop>pause
    Drücken Sie eine beliebige Taste . . .

  • Ähm, das sieht so aus, also ob mit dem Zeichensatz, z.B. nach copy&paste, etwas nicht stimmt.
    Im Zweifelsfall mal händisch diesen Teil neu schreiben, statt zu kopieren.

    Wie genau wurde das Skript erstellt? Code aus dem Blog kopiert und dann wo/wie eingefügt? Welcher Editor oder wie das *.cmd/*.bat-Skript dann erstellt?

  • Habe es hinbekommen!

    1. Das Datumsformat war falsch!
    Es muss als “Monat/tag/Jahr” eingegeben werden!

    2. Und dann habe ich die Batch-Datei mit Notepad++ erstellt und im ANSII-Format gespeichert.
    Dann ging es! Juhuu!

    Danke!

  • Zu 1. Jep, Windows ist unter der Haube Englisch.
    Zu 2. Notepad++ arbeitet per Default mit UTF-8, das mag Windows nur bedingt.

    Freut mich, das es nun läuft.

  • Hallo Andy,

    Danke für den super Artikel.
    Ich konnte alles soweit implementieren. Auch die Textdatei wird bei mir mit der richtigen Zeitspanne in ms erzeugt.
    Allerdings startet die Virtual Box trotzdem mit der zuletzt übers Internet aktualisierten Zeit.
    In den Einstellungen der Virtual Box habe ich schon den Netzwerkadapter deaktiviert, damit er sich nicht mit dem Internet synchronisieren kann.
    Zudem habe ich den Installationspfad überprüft, der stimmt auch soweit.
    In der Virtuellen Maschine (Win10) habe ich bei den Datumseinstellungen manuell und automatisch beides ausprobiert – ohne Erfolg.

    Kannst du mir sagen, was ich noch überprüfen könnte?

    Viele Grüße Tim

  • Hallo Tim,

    hast du mal in der Konfig.-Datei der VM geschaut, ob der Wert aus dem ersten Befehl (VBoxManage setextradata “VM name” “VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled” 1) gesetzt wurde?
    Damit wird sozusagen die Synchronisation via BIOS-Uhr deaktiviert.
    Das Windows 10 innerhalb der VM “holt” sich seine Zeit auf zwei Arten: Via BIOS und via NTP (Netzwerk/Internet).
    Wenn die Netzwerkverbindung getrennt ist, bleibt eigentlich ausgehend von deiner Beschreibung nur noch die Zeit via BIOS.

    Ansonsten, da wir das Thema in den Kommentaren neulich erst hatten: Bitte darauf achten, dass das Skript im ANSI- und nicht um UTF-8-Format gespeichert wird.

  • Hallo Andy,

    Danke für die ausführliche Antwort. Ich konnte das Problem etwas näher spezifieren.
    – in der Konfig.-Datei wurde der Wert für die Synchronisation auf 1 geändert, habe ich auch mehrfach getestet
    – ebenso ist in der Konfig. der VirtualBox der Netzwerkadapter deaktiviert
    – mit dem ANSI-Format hatte ich ein wenig Probleme, da der Editor unter Win10 immer UTF-8 als Format anzeigt

    – komischerweise funktioniert dein Script, wenn ich eine positive Zeit (also ein Datum in der Zukunft) angeben
    – lediglich eine negative Zeit in ms bzw. ein Datum in der Vergangenheit kann nicht ausgeführt werden

    Kann es sein, dass diese Option durch ein Upadate von VirtualBox nun verhindert wird?

    Viele Grüße Tim

  • Ist mir nichts bekannt.
    Ich hab’ das gerade mal durchgespielt, es könnte sein, das sich die Ausgabe des Powershell-Befehls geändert hat und in Folge mittlerweile eine Stelle zu viel abgeschnitten wird.
    Ändere mal “set MS=%MS:~20,-5%” zu “set MS=%MS:~20,-4%”.

    Kommando zurück, war mein Fehler, im Test hat sich eine Leerstelle eingeschlichen.

  • Ich habe mal ein wenig getestet, das Skript funktioniert schon, aber es sieht so aus, als ob neuere VirtualBox-Versionen den “biossystemtimeoffset” limitieren.
    Ganz egal welchen Wert von heute (17.11.2021) an in der Vergangenheit man angibt, es wird auf maximal 127 Tage (10.972.800.000 ms), sprich von heute aus gesehen auf den 13.07.2021, gesetzt.
    Bei “08/01/2018” (1204 Tage Differenz) geschieht das ebenso wie bei “01/01/2021” (320 Tage Differenz).
    Im Changelog und im Forum habe ich auf die Schnelle dazu nichts gefunden (oder es übersehen), in der Hilfe steht auch nichts von einer Grenze oder einem Limit.

  • Das klingt auf jeden Fall interessant.
    Ich habe mich auch nochmal ein wenig ran gesetzt.
    Bei mir funktioniert es mit keinem Datum in der Vergangenheit. Nur positive Werte werden verarbeitet.
    Dann werde ich mal nachsehen, ob ich eine alte Version der VirtualBox finde, evtl. klappt es da besser.

  • Ich habe das Problem ausfindig machen können. Es liegt am Windows Image.
    Ich habe das Script mal in einer Virtuellen Box auf Win7 ausprobiert. Dort funktioniert es ohne Probleme.
    Lediglich unter Win10 funktioniert es bei mir nicht. Anscheind habe ich eine recht neue Version, da es ja bei allen Anderen hier im Forum klappt.
    Nun kommt es: Oracle bzw. Windows können mit negativen Zeiten umgehen, jedoch müssen sie bei mir zeitlich gesehen in der Zukunft, von dem Datum der Virtuellen Maschine aus betrachtet, liegen, damit es klappt.
    Beispiel: Ich stelle in der VM ein festes Datum 01.06.2020 ein. Nun kann ich mit dem Script das Datum nur ins Positive, also in die Zukunft verändern z.B. auf den 01.07.2020, aber nicht vor den 01.06.20 legen. Komplett unabhängig davon, welche Zeit das Hostsystem (wo die Virtuelle Maschine installiert ist) hat.
    Ich denke Win10 hat dort mal ausgebessert und bis jetzt hat es keiner gemerkt.

  • Also ich hab’ unter aktuellem Windows 10 Pro nicht dieses Verhalten. Getestet habe ich allerdings immer nur in die Vergangenheit, nie in die Zukunft.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.