La máquina de referencia no es capaz de arrancar Windows PE cuando se intenta realizar una captura de imagen en un sistema operativo Windows con un idioma diferente a la versión US.English

Dado que muchos de nuestros sistemas están en otros idiomas diferentes al inglés (español fundamentalmente) este es una situación que se nos puede presentar con facilidad.

Para solventar esta situación se ha publicado el artículo referente a MDT 2008 al que se puede acceder desde https://support.microsoft.com/?id=952573

En resumen, este error se debe a que el script Ztibcdutility.vbs se queda esperando un “Successfully” tras la ejecución de BcdEdit y si el sistema no esta en US.English esto no ocurre, por lo que la fase de edición del arranque no es correctamente actualizada.

Para solucionarlo habrá que modificar el script Ztibcdutility.vbs del siguiente modo:

1.     En MDT 2008 en la carpeta de distribución abrir la carpeta "scripts".

2.     Editar el script Ztibcdutility.vbs

3.     Localizar el código que contiene la función CreateNewRamDiskEntry

If iRetVal <> Failure Then

            arrTemp = split(iRetVal, " ")

            sNewGuid = arrTemp(2)

      Else

            CreateNewRamDiskEntry = iRetVal

            Exit Function

      End If

Borrar el código original y cambiarlo por el siguiente:

If iRetVal <> Failure Then

            Dim aGuidTemp

arrTemp = split(iRetVal, "{")

            aGuidTemp = split(arrTemp(1), "}")

            sNewGuid = "{" & aGuidTemp(0) & "}"

      Else

            CreateNewRamDiskEntry = iRetVal

            Exit Function

      End If

4.     Localizar la function RunBCDEdit

5.     Utilizar el siguiente código para reemplazar la función original de RunBCDEdit

Function RunBcdEdit (sCommand, bCapture)

 Dim iRetVal, oExec, sLine,oExec1, sLine1,arrTemp1

 Dim re

      sBcdEdit = oEnv.Item("SystemRoot") & "\system32\bcdedit.exe"

       If not oFSO.FileExists(sBcdEdit) Then

            SetBcdError ("Unable to locate bcdedit.exe")

            RunBcdEdit = Failure

           Exit Function

      End If

      sCommand = sBcdEdit & " " & sCommand

    Set oExec = oShell.Exec(sCommand)

      sLine = oExec.StdOut.ReadLine

     if bCapture = True Then

          iRetVal = sLine

      Else

          iRetVal = Success

      End If

      RunBcdEdit = iRetVal

End Function

Espero que esta información ayuda a solucionar algunas situaciones comprometidas a la hora de preparar una instalación distribuida de nuestros sistemas en otros idiomas.

 

Raúl del Moral Guirado

Tecnico de Soporte Premier España