====== Convertir un disque virtuel VMDK en image Ghost GHO ====== Quand vous etes en milieu professionnel, vous devez certainement faire des déploiements d'une installation d'une machine sur plusieurs dizaines ou centaines d'autre pour avoir la même installation. Ici on va utiliser Altiris Ghost (anciennement nommé Symantec Ghost). Pour avoir l'image (master) de la machine à déployer soit on travaille avec une machine physique soit avec une machine virtuelle. Cette dernière solution est de loin la plus simple et flexible, car on peut faire des snapshots pour faire plusieurs tests de configuration ou installation de logiciel sans limite avec un gain de temps incomparable!!! Il existe plusieurs solutions de virtualisation, mais les plus utilisées sont Virtualbox et VMware (oui il y a Parallels, Qemu, HyperV,…). Perso j'utilise VirtualBox, car multi-plateforme et gratuit. On peut certes faire une image comme avec une machine physique (PXE, Automation Folder) mais le plus simple est de transformer/convertir directement le disque virtuel en image. L'utilitaire ghost32.exe ou ghost64.exe de Ghost Standard Tools permet de le faire à partir des disques virtuel VMDK. Vous devez donc pensez à choirsir ce type de disque lors de la création de votre machine virtuelle. Sinon il faudra convertir votre disque. Avec VirtualBox il y a les commande pour cela. Ce nouveau script gere le clonage temporaire des disques VDI en VMDK. Voici donc le script, à adapter selon vos besoins //**convertVMDKtoGHO.bat** // @echo off cls chcp 65001> nul chcp 850> nul REM REM Script de conversion de disque virtuel VMDK en image ghost GHO REM REM by O.brizard (a.k.a beemoon.fr) REM @2025 REM TITLE Convert VirtualBox VMDK to Ghost image GHO SETLOCAL EnableDelayedExpansion REM Check Ghost Tools If "%PROCESSOR_ARCHITECTURE%"=="AMD64" set arch=64 If "%PROCESSOR_ARCHITECTURE%"=="x86" set arch=32 if not exist "C:\Program Files (x86)\Symantec\Ghost\ghost%arch%.exe" ( echo Ghost Tools n'est pas install‚ sur cette machine. echo - installez d'abord Symantec_Ghost_Standard_Tools echo - ou d‚placez le r‚pertoire dans "C:\Program Files (x86)\Symantec" echo. pause exit ) pushd "C:\Program Files\Oracle\VirtualBox" rem **** EXTRA pour Virtualbox **** rem https://www.virtualbox.org/manual/ch08.html REM **** Paramètes pour automatiser (Optionnel) **** set VMtoClone="" REM **** Fin Paramètres **** :listVMs echo. echo Nom des VMs disponibles : VBoxManage.exe list vms> %TMP%\tmp.txt VBoxManage.exe list vms echo. set VMtoClone="" for /f %%i in ("%TMP%\tmp.txt") do set size=%%~zi if %size% leq 0 ( echo Il n'y a pas de VM disponibles echo. pause goto :eof ) :choixVM if %VMtoClone%=="" ( set /p VMtoClone=Nom de la VM qui est entre double quote … convertir en GHO: ) if %VMtoClone%=="" goto :listVMs FOR /F %%a IN ('findstr /i /c:"%VMtoClone%" %TMP%\tmp.txt^|find /C """%VMtoClone%"""') do set nbFind=%%a if not %nbFind%==1 ( echo. echo La VM "%VMtoClone%" n'existe pas. goto :listVMs ) :_start del /Q %TMP%\tmp.txt REM Info sur la VM originale VBoxManage.exe showvminfo %VMtoClone% --machinereadable>%TMP%\showvminfo.txt for /f "tokens=*" %%a in (%TMP%\showvminfo.txt) do ( set z=%%a set z=!z:"=! set z=!z:\\=\! set "!z!" 2>nul REM echo !z! ) REM nettoyage des infos del /Q %TMP%\showvminfo.txt> nul REM https://beemoon.fr/doku.php?id=systeme:windows:expandfilename for /f "delims=" %%i in ("%SATA-0-0%") do set disqueType=%%~xi for /f "delims=" %%i in ("%CfgFile%") do set VMsFolder=%%~dpi set VMsFolder=%VMsFolder:~0,-1% for /f "delims=" %%i in ("%ostype%") do set osType=%%i set osType=%osType:~0,7% set newVM=master_%VMtoClone% set /p "newVMTmp=Nomage du GHO [ %newVM% ] :" if NOT "%newVMTmp%"=="" (set newVM=%newVMTmp%) if exist "%VMsFolder%" ( VBoxManage.exe unregistervm %newVM% --delete>nul 2>&1 if %errorlevel% EQU 1 ( rd /Q /S "%VMsFolder%" set errorlevel=0 ) ) echo. echo Merge des snapshots par clone de la machine r‚f‚rente %VMtoClone% VBoxManage.exe clonevm %VMtoClone% --mode machine --name %newVM% --register REM Info sur la nouvelle VM VBoxManage.exe showvminfo %newVM% --machinereadable>%TMP%\showvminfo.txt for /f "tokens=*" %%b in (%TMP%\showvminfo.txt) do ( set z=%%b set z=!z:"=! set z=!z:\\=\! set "!z!" 2>nul ) REM nettoyage des infos del /Q %TMP%\showvminfo.txt> nul REM https://beemoon.fr/doku.php?id=systeme:windows:expandfilename for /f "delims=" %%i in ("%SATA-0-0%") do set disqueType=%%~xi for /f "delims=" %%i in ("%CfgFile%") do set VMsFolder=%%~dpi set VMsFolder=%VMsFolder:~0,-1% for /f "delims=" %%i in ("%ostype%") do set osType=%%i set osType=%osType:~0,7% if NOT "%disqueType%"==".vmdk" ( if "%disqueType%"==".vdi" ( echo. echo Conversion du disque VDI en format VMDK pour le clonage avec Ghost. VBoxManage.exe clonemedium "%SATA-0-0%" "%SATA-0-0:~0,-4%.vmdk" --format=VMDK ) else ( echo Seuls les disques virtuels VMDK et VDI sont pris en charge echo. pause goto :eof ) ) REM Création du dossier de stockage de la capture GHO. if not exist "%USERPROFILE%\Desktop\%newVM%" mkdir "%USERPROFILE%\Desktop\%newVM%" rem https://www.symantec.com/connect/articles/converting-image-file-format-gho-vmdk-and-vmdk-gho set _src="%SATA-0-0:~0,-4%.vmdk" REM Pour VM linux set ghostParams=-clone,mode=create,src=%_src%,dst="%USERPROFILE%\Desktop\%newVM%\%newVM%.gho" -batch -sure -split=2048 -Z -id -ntil -ntic REM Pour VM Windows FOR /F "tokens=*" %%a IN ('echo %osType%^|find /C "Windows"') do set isWindows=%%a if %isWindows%==1 ( set ghostParams=-clone,mode=create,src=%_src%,dst="%USERPROFILE%\Desktop\%newVM%\%newVM%.gho" -batch -sure -split=2048 -Z ) echo. echo D‚marrage de la capture en GHO avec Ghost... "C:\Program Files (x86)\Symantec\Ghost\ghost%arch%.exe" %ghostParams% rem Suppresion du clone Virtualbox if exist "%VMsFolder%" ( if exist "%SATA-0-0:~0,-4%.vdi" ( echo. echo Suppression du VMDK temporaire VBoxManage.exe closemedium disk "%SATA-0-0:~0,-4%.vmdk" --delete ) echo. echo Suppression du clone temporaire. VBoxManage.exe unregistervm %newVM% --delete if %errorlevel% EQU 1 ( rd /Q /S "%VMsFolder%" ) ) :end echo. echo =================================================================== echo Stockage de la capture GHO dans "%USERPROFILE%\Desktop\%newVM%" echo =================================================================== echo. echo *** Termin‚ *** echo. REM Pour déplacer la capture REM move "%USERPROFILE%\Desktop\%newVM%" c:\>nul pause