VirtualBox Virtuelle Maschine per Script erstellen; mein Lösungsansatz
- Holgi
- Guru
- Beiträge: 3094
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 392 Mal
- Danke erhalten: 507 Mal
- Gender:
VirtualBox Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Wer öfter mal mit Windows Installationen herumspielt, um Dinge zu testen (z.B. Änderungen an einer autounattend.xml), wird die Vorzüge einer Virtuellen Maschine genießen.
Es ist zwar einfach genug, die virtuellen Maschine mit dem Hyper-V Manager zu erstellen; oder eben mit dem Oracle VirtualBox Manager:
man kan das Erstellen (und ggf. das Löschen) der VM aber auch automatisieren.
Wie das mit Hyper-V geht, habe ich hier
viewtopic.php?t=25114&hilit=l%C3%B6sungsansatz#p361369
vorgestellt.
Nun wollte ich wissen, ob das auch mit VirtualBox geht. Auf meine Frage habe ich hier
https://www.deskmodder.de/blog/2022/09/ ... /#comments bislang keine und im Netz nur unbefriedigende Antworten erhalten.
Im Internet gibt es viele Lösungsansätze für Linux, aber ich konnte keine Komplettlösung für VirtualBox mit Windows 11 als Script finden.
Da VirtualBox seit Version 6.1.28 nunmehr auch Windows 11 unterstützt, lag es nahe, die Erstellung der VM mit Windows 11 unter Windows zu automatisieren.
Der Minimalansatz sieht so aus:
Den Inhalt kopieren, in Editor speichern und z.B. als VBOX_Auto.cmd speichern
Im obigen Beispiel liegt die Windows 11 ISO im Benutzer - Downloadverzeichnis und es handelt sich um die 25201.1000.Copper-X64-DE-CLIENTPRO.iso hier aus dem Blog (danke an Birkuli!).
VirtualBox ist als 64-bit Version im Standardverzeichnis gespeichert.
Die SET-Variablen können/müssen natürlich angepasst werden.
Wird das cmd-Script gestartet, richtet es die VM ein, schließt virtuelle Festplatte und DVD-Laufwerk an (für die Installations-DVD) und startet dann die VM. Sodann läuft die Windows-Installation an.
Achtung!: man hat nur einige Sekunden Zeit, "Any-Key" zu drücken, damit die Installation von der virtuellen DVD startet.
Wie man ""Press any key to continue" loswird, ist hier beschrieben:
viewtopic.php?p=361517&hilit=vm+press+a ... ue#p361517
Es geht aber auch mehr:
automatische Installation mit UserName, Passwort, Installationskey, Änderung von Speicher und CPU-Anzahl etc. etc.
Dann sieht das Script so aus:
Viel Spaß!!
Anregungen, Verbesserungsvorschläge, Kritiken etc. sind herzlich willkommen.
BTW: das Ganze funktioniert natürlich auch mit Windows 10. Dann SET OSTYPE=Windows10_64 (für 64-bit) bzw. SET OSTYPE=Windows10 (für 32-bit) angeben!
Weiß jemand, ob so etwas in der Art auch mit VMWare Workstation/Player möglich ist?
Nachtrag:
wer die VM mal eben schnell löschen möchte, um den nächsten Test auszuführen, kann mit dem folgenden Script die Löschung automatisiert durchführen:
nur einmal den Namen bei "SET VMNAME=" ändern
Es ist zwar einfach genug, die virtuellen Maschine mit dem Hyper-V Manager zu erstellen; oder eben mit dem Oracle VirtualBox Manager:
man kan das Erstellen (und ggf. das Löschen) der VM aber auch automatisieren.
Wie das mit Hyper-V geht, habe ich hier
viewtopic.php?t=25114&hilit=l%C3%B6sungsansatz#p361369
vorgestellt.
Nun wollte ich wissen, ob das auch mit VirtualBox geht. Auf meine Frage habe ich hier
https://www.deskmodder.de/blog/2022/09/ ... /#comments bislang keine und im Netz nur unbefriedigende Antworten erhalten.
Im Internet gibt es viele Lösungsansätze für Linux, aber ich konnte keine Komplettlösung für VirtualBox mit Windows 11 als Script finden.
Da VirtualBox seit Version 6.1.28 nunmehr auch Windows 11 unterstützt, lag es nahe, die Erstellung der VM mit Windows 11 unter Windows zu automatisieren.
Der Minimalansatz sieht so aus:
Den Inhalt kopieren, in Editor speichern und z.B. als VBOX_Auto.cmd speichern
Code: Alles auswählen
SET VBOXMANAGE=C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
SET VMNAME=WIN11
SET OSTYPE=Windows11_64
SET ISOPATH=%homepath%\Downloads\
SET ISONAME=25201.1000.Copper-X64-DE-CLIENTPRO
"%VBOXMANAGE%" createvm --name "%VMNAME%" --ostype %OSTYPE% --default --register
"%VBOXMANAGE%" createmedium disk --filename "%userprofile%\VirtualBox VMs\%VMNAME%\%VMNAME%.vdi" --size 65536
"%VBOXMANAGE%" storagectl "%VMNAME%" --name "IDE Controller" --add ide --controller PIIX4
"%VBOXMANAGE%" storageattach "%VMNAME%" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium "%ISOPATH%%ISONAME%.iso"
"%VBOXMANAGE%" storageattach "%VMNAME%" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "%userprofile%\VirtualBox VMs\%VMNAME%\%VMNAME%.vdi"
"%VBOXMANAGE%" startvm "%VMNAME%"
exit
VirtualBox ist als 64-bit Version im Standardverzeichnis gespeichert.
Die SET-Variablen können/müssen natürlich angepasst werden.
Wird das cmd-Script gestartet, richtet es die VM ein, schließt virtuelle Festplatte und DVD-Laufwerk an (für die Installations-DVD) und startet dann die VM. Sodann läuft die Windows-Installation an.
Achtung!: man hat nur einige Sekunden Zeit, "Any-Key" zu drücken, damit die Installation von der virtuellen DVD startet.
Wie man ""Press any key to continue" loswird, ist hier beschrieben:
viewtopic.php?p=361517&hilit=vm+press+a ... ue#p361517
Es geht aber auch mehr:
automatische Installation mit UserName, Passwort, Installationskey, Änderung von Speicher und CPU-Anzahl etc. etc.
Dann sieht das Script so aus:
Code: Alles auswählen
SET VBOXMANAGE=C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
SET VMNAME=WIN11
SET OSTYPE=Windows11_64
SET ISOPATH=%homepath%\Downloads\
SET ISONAME=25201.1000.Copper-X64-DE-CLIENTPRO
SET USER=Admin
SET FULLNAME=Deskmodder
SET PASSWORD=Test1234
SET INDEX=1
SET LOCALE=de_DE
SET FORMAT=VDI
SET KEY=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
"%VBOXMANAGE%" createvm --name "%VMNAME%" --ostype %OSTYPE% --default --register
"%VBOXMANAGE%" createmedium disk --filename "%userprofile%\VirtualBox VMs\%VMNAME%\%VMNAME%.vdi" --size 65536 --format %FORMAT%
"%VBOXMANAGE%" storagectl "%VMNAME%" --name "IDE Controller" --add ide --controller PIIX4
"%VBOXMANAGE%" storageattach "%VMNAME%" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium "%ISOPATH%%ISONAME%.iso"
"%VBOXMANAGE%" storageattach "%VMNAME%" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "%userprofile%\VirtualBox VMs\%VMNAME%\%VMNAME%.vdi"
"%VBOXMANAGE%" modifyvm "%VMNAME%" --boot1 dvd --boot2 disk --boot3 floppy --boot4 none
rem Speichereinstellungen
"%VBOXMANAGE%" modifyvm "%VMNAME%" --memory 4096 --vram 128
rem Anzahl CPUs
"%VBOXMANAGE%" modifyvm "%VMNAME%" --cpus 2
"%VBOXMANAGE%" unattended install "%VMNAME%" --iso "%ISOPATH%%ISONAME%.iso" --user="%USER%" --full-user-name="%FULLNAME%" --image-index=%INDEX% --locale=%LOCALE% --password "%PASSWORD%" --key "%KEY%" --install-additions
"%VBOXMANAGE%" startvm "%VMNAME%"
exit
Anregungen, Verbesserungsvorschläge, Kritiken etc. sind herzlich willkommen.
BTW: das Ganze funktioniert natürlich auch mit Windows 10. Dann SET OSTYPE=Windows10_64 (für 64-bit) bzw. SET OSTYPE=Windows10 (für 32-bit) angeben!
Weiß jemand, ob so etwas in der Art auch mit VMWare Workstation/Player möglich ist?
Nachtrag:
wer die VM mal eben schnell löschen möchte, um den nächsten Test auszuführen, kann mit dem folgenden Script die Löschung automatisiert durchführen:
Code: Alles auswählen
@Echo off
SET VBoxManage=C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
SET VMNAME=WIN11
Echo Achtung! Im folgenden Verlauf wird die Virtuelle Maschine %VMNAME% unwiderruflich geloescht!!
pause
"%VBoxManage%" controlvm "%VMNAME%" poweroff >nul 2>nul
"%VBoxManage%" storageattach "%VMNAME%" --storagectl "SATA" --port 0 --device 0 --type hdd --medium none >nul 2>nul
"%VBoxManage%" closemedium disk "%userprofile%\VirtualBox VMs\%VMNAME%\%VMNAME%.vdi" --delete >nul 2>nul
timeout /t 10
"%VBoxManage%" unregistervm --delete "%VMNAME%" >nul 2>nul
timeout /t 10
rmdir "%homepath%\VirtualBox VMs\%VMNAME%" /s /q >nul 2>nul
exit
Zuletzt geändert von Holgi am 15.09.2022, 20:14, insgesamt 1-mal geändert.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- g-force
- Elite
- Beiträge: 2706
- Registriert: 07.10.2016, 19:30
- Hat sich bedankt: 404 Mal
- Danke erhalten: 416 Mal
- Gender:
Re: VirtualBox Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Ein sehr ähnliches Script findet sich auch in "XP2ESD", auch dort wird die VM (VirtualBox) per Script erstellt und gelöscht.
EDIT:
Hier eine komplette Übersicht über die möglichen Parameter: https://www.virtualbox.org/manual/ch08. ... registervm
EDIT:
Hier eine komplette Übersicht über die möglichen Parameter: https://www.virtualbox.org/manual/ch08. ... registervm
Windows VISTA x64 - Integration ALLER Updates: viewtopic.php?t=29624
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/PzsffQNWU
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/PzsffQNWU
- Holgi
- Guru
- Beiträge: 3094
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 392 Mal
- Danke erhalten: 507 Mal
- Gender:
Re: VirtualBox Virtuelle Maschine per Script erstellen; mein Lösungsansatz
danke g-force für den Hinweis auf XP2ESD und die Infoseite zu VBOXManage.
Die Einstellmöglichkeiten sind sehr umfangreich. Wenn man aber sich nicht 100%ig mit ACPI, OHCI, PAE etc. auskennt, dann ist da schnell mal etwas verstellt und dann geht im Worst Case gar nichts mehr.
Ich bin zu dem Schluss gekommen, dass die meisten Einstellmöglichkeiten am Besten von VirtualBox selbst vorgenommen werden sollten. Die Steuerung hierzu findet über den Schalter "OSTYPE" statt.
Je nach dem, welches BS mit welcher Architektur (X86/X64) dort eingestellt wird, werden mehr oder weniger sinnvolle Voreinstellungen vorgenommen.
Lediglich bei Anzahl der CPUs und Speicher (RAM und VRAM) gehe ich mit VBOX nicht konform.
Ein paar Sachen aus XP2ESD habe ich mal in mein Script übernommen.
Anbei mal ein angepasstes Script für die Windows XP mit modern Setup von g-force (viewtopic.php?t=28372&hilit=modern+xp&start=30#p391958
Die Einstellmöglichkeiten sind sehr umfangreich. Wenn man aber sich nicht 100%ig mit ACPI, OHCI, PAE etc. auskennt, dann ist da schnell mal etwas verstellt und dann geht im Worst Case gar nichts mehr.
Ich bin zu dem Schluss gekommen, dass die meisten Einstellmöglichkeiten am Besten von VirtualBox selbst vorgenommen werden sollten. Die Steuerung hierzu findet über den Schalter "OSTYPE" statt.
Je nach dem, welches BS mit welcher Architektur (X86/X64) dort eingestellt wird, werden mehr oder weniger sinnvolle Voreinstellungen vorgenommen.
Lediglich bei Anzahl der CPUs und Speicher (RAM und VRAM) gehe ich mit VBOX nicht konform.
Ein paar Sachen aus XP2ESD habe ich mal in mein Script übernommen.
Anbei mal ein angepasstes Script für die Windows XP mit modern Setup von g-force (viewtopic.php?t=28372&hilit=modern+xp&start=30#p391958
Code: Alles auswählen
@Echo off
SET VMNAME=WINXP
SET OSTYPE=WindowsXP
SET IMAGEARCH=X86
SET ISOPATH=%homepath%\Downloads\
SET ISONAME=WinXP_ModernSetup_ESD
SET USER=Admin
SET FULLNAME=Deskmodder
SET PASSWORD=Test1234
SET INDEX=1
SET LOCALE=de_DE
SET FORMAT=VDI
SET KEY=XXXXX-XXXXX-XXXXX-XXXXX
SET RAM32=2048
SET RAM64=4096
SET VRAM=128
SET VirtualMachinePath=%userprofile%\VirtualBox VMs\
REM Set host architecture
if exist "%WinDir%\SysWOW64" (
set ARCH=x64
) else (
set ARCH=x86
)
if exist "%ProgramFiles%\Oracle\VirtualBox\VBoxManage.exe" set "VBOXMANAGE=%ProgramFiles%\Oracle\VirtualBox\VBoxManage.exe"
if exist "%ProgramFiles(x86)%\Oracle\VirtualBox\VBoxManage.exe" set "VBOXMANAGE=%ProgramFiles(x86)%\Oracle\VirtualBox\VBoxManager.exe"
if not exist "%VBOXMANAGE%" (
echo.
echo VirtualBox is not installed, please download and install it
start https://www.virtualbox.org/wiki/Downloads
echo.
echo If you don't have VirtualBox installed in Program Files,
echo simply point "VirtualBoxPath" in config.ini with your custom path
echo.
pause
goto :EOF
)
rem alte VM löschen
"%VBOXMANAGE%" controlvm "%VMNAME%" poweroff >nul 2>nul
"%VBOXMANAGE%" unregistervm --delete "%VMNAME%" >nul 2>nul
rem neue VM erstellen
if /i "%ImageArch%" == "X86" (
"%VBOXMANAGE%" createvm --name "%VMNAME%" --ostype "%OSTYPE%" --default --register >nul 2>nul
) else (
"%VBOXMANAGE%" createvm --name "%VMNAME%" --ostype "%OSTYPE%_64" --default --register >nul 2>nul
)
"%VBOXMANAGE%" createmedium disk --filename "%VirtualMachinePath%%VMNAME%\%VMNAME%" --size 65536 --format %FORMAT%
"%VBOXMANAGE%" storageattach "%VMNAME%" --storagectl "IDE" --port 0 --device 0 --type hdd --medium "%VirtualMachinePath%%VMNAME%\%VMNAME%.vdi"
"%VBOXMANAGE%" storageattach "%VMNAME%" --storagectl "IDE" --port 1 --device 0 --type dvddrive --medium "%ISOPATH%%ISONAME%.iso"
"%VBOXMANAGE%" modifyvm "%VMNAME%" --cpus 2
REM Use different minimal amount for x64 systems. Best to keep it really on minimum requirements for capturing images
if /i "%ImageArch%" == "i386" (
"%VBOXMANAGE%" modifyvm "%VMNAME%" --memory "%RAM32%" --vram "%VRAM%" >nul 2>nul
) else (
"%VBOXMANAGE%" modifyvm "%VMNAME%" --memory "%RAM64%" --vram "%VRAM%" >nul 2>nul
)
"%VBOXMANAGE%" startvm "%VMNAME%"
exit
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114