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.

Voici donc le script, à adapter selon vos besoins

convertVMDKtoGHO.bat

@echo off
cls

REM
REM Script de conversion de disque virtuel VMDK en image ghost GHO
REM
REM by O.brizard (a.k.a beemoon.fr)
REM @2019
REM

TITLE Convert VirtualBox VMDK to Ghost image GHO

REM
REM Si pas d'automatisation du processus depuis une VM VirtualBox
REM mettre auto=0
REM
set auto=1
if %auto% EQU 0 goto noAuto

rem **** EXTRA pour Virtualbox ****
    rem https://www.virtualbox.org/manual/ch08.html

REM **** Paramètres selon votre usage ****
    set VMtoClone=win10_GPT
    set VMsFolder="C:\VirtualBox VMs"
    set newVM=masterGEII_win10GPT
REM **** Fin Paramètres ****

    set _src=""
    set _target=%newVM%
    set VMsFolder=%VMsFolder:"=%

    if exist "%VMsFolder%\%newVM%" (
    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" unregistervm %newVM% --delete>nul 2>&1
        if %errorlevel% EQU 1 (
        rd /Q /S "%VMsFolder%\%newVM%"
        set errorlevel=0
        )
    )
    echo Merge des snapshots par clone de la machine référente pour Ghost
    echo.
    "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonevm %VMtoClone% --mode machine --name %newVM% --register

    set _src="%VMsFolder%\%newVM%\%newVM%-disk1.vmdk"
rem **** FIN EXTRA ****

:noAuto
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és sur cette machine.
    echo.
    pause
    exit
)

if %_src%=="" (
    explorer "C:\VirtualBox VMs"
    set /p _src=Disque virtuel VDI/VMDK:
)

if not exist %_src% (
    echo %_src% not exist
    echo Full path required
    echo.
    goto :eof
)

FOR %%i IN (%_src%) DO (
    set fileextension=%%~xi
)

if /i not "%fileextension%"==".vmdk" (
        echo Seul les disque virtuels VMDK sont pris en charge
        echo.
        pause
        exit
)

if "%_target%"=="" set /p _target=Nom de l'image GHO à générer (sans extension):
echo.

if not exist "%USERPROFILE%\Desktop\%_target%" mkdir "%USERPROFILE%\Desktop\%_target%"

cd /d "C:\Program Files (x86)\Symantec\Ghost"
rem https://www.symantec.com/connect/articles/converting-image-file-format-gho-vmdk-and-vmdk-gho
set vboxParams=-clone,mode=create,src=%_src%,dst=%USERPROFILE%\Desktop\%_target%\%_target%.gho -batch -sure -split=100

echo Démarrage du Ghost...
ghost%arch%.exe %vboxParams%

rem Suppresion du clone Virtualbox
if exist "%VMsFolder%\%newVM%" (
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" unregistervm %newVM% --delete>nul 2>&1
    if %errorlevel% EQU 1 (
    rd /Q /S "%VMsFolder%\%newVM%"
    )
)

:end
echo.
echo *** Terminé ***
echo.
explorer "%USERPROFILE%\Desktop\%_target%"
pause
Dernière modification: le 2019/02/14