WinPE archives - Network Administrator Knowledgebase

Network Administrator Knowledgebase:

WinPE

Jun 25 2009   7:00AM GMT

Windows Preinstallation Environment (Windows PE 3.0 - based on Windows 7)



Posted by: Michael Khanin
WinPE, winpe 3.0

Windows® Preinstallation Environment (Windows PE) is a minimal operating system designed to prepare a computer for Windows installation (and not just for Installation). Windows PE is available as a stand-alone product to customers with the proper licensing agreement. It is an integrated component of many Windows Setup and recovery technologies, including Setup for Windows® 7and Windows Deployment Services (WDS).

Windows PE 3.0 is the latest release based on the Windows 7 operating system.

I’ve changed few scripts that I’ve found on MSFN Forum and now I’d like to share a script, that will create a WinPE 3.0 ISO just by one click :)…

I called this script _WinPE-3_Builder.bat. here is a content of _WinPE-3_Builder.bat:

@Echo off
%SYSTEMDRIVE%

CD “C:\Program Files\Windows AIK\Tools\PETools”

Set Architecture=x86
Set PEDest=c:\winpe_x86
Set ISOName=winpe_x86.iso
Set removeboot=true

pushd %cd%

call copype.cmd %Architecture% %PEDest%

Dism /Mount-Wim /WimFile:%PEDest%\winpe.wim /index:1 /MountDir:%PEDest%\mount
Dism /image:%PEDest%\mount /Get-Packages

Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\winpe-hta.cab”
Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\en-us\winpe-hta_en-us.cab”

Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\winpe-legacysetup.cab”
Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\en-us\winpe-legacysetup_en-us.cab”

Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\winpe-mdac.cab”
Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\en-us\winpe-mdac_en-us.cab”

Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\winpe-pppoe.cab”
Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\en-us\winpe-PPPOE_en-us.cab”

Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\winpe-scripting.cab”
Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\en-us\winpe-scripting_en-us.cab”

REM Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\winpe-setup.cab”
REM Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\en-us\winpe-setup_en-us.cab”

REM Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\winpe-setup-client.cab”
REM Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\en-us\winpe-setup-client_en-us.cab”

REM Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\winpe-setup-server.cab”
REM Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\en-us\winpe-setup-server_en-us.cab”

Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\winpe-wmi.cab”
Dism /image:%PEDest%\mount /Add-Package /PackagePath:”C:\Program Files\Windows AIK\Tools\PETools\%Architecture%\WinPE_FPs\en-us\winpe-wmi_en-us.cab”

copy “C:\Program Files\Windows AIK\Tools\%Architecture%\imagex.exe” %PEDest%\mount\Windows\System32\

Dism /Unmount-Wim /MountDir:%PEDest%\mount /Commit
Copy %PEDest%\winpe.wim %PEDest%\ISO\sources\boot.wim

IF “%removeboot%”==”true” del /q %pedest%\iso\boot\bootfix.bin

oscdimg -n -b%PEDest%\etfsboot.com %PEDest%\ISO %PEDest%\%ISOName%

popd

Oct 28 2008   6:47PM GMT

Detect HALs under WinPE (Vista) by running Batch Script



Posted by: Michael Khanin
HAL, WinPE

It’s a lot of posts that explained how to detect HAL. Almost all of those solutions done in VB script. As well I’ve seen a lot of post about “problems’ running VB script under WinPE. So, one day I tried to create a batch file, that allows to detect a HAL under WinPE. I did all my tests under VistaPE 12 (I’ve used the VistaPE v.12 RC1).

Here is content of HAL_Detector.bat script:

 

@echo off
REM .
REM . - Advanced Configuration and Power Interface (ACPI) PC:  ACPIPIC_UP
REM . - ACPI Uniprocessor PC:                                                 ACPIAPIC_UP
REM . - ACPI Multiprocessor PC:                                               ACPIAPIC_MP
REM .
REM . Advanced Configuration and Power Interface (ACPI) PC
REM . - halacpi.dll (renamed to hal.dll)
REM . - ntkrnlpa.exe
REM . - ntoskrnl.exe
REM .
REM . ACPI Uniprocessor PC
REM . - halaacpi.dll (renamed to hal.dll)
REM . - ntkrnlpa.exe
REM . - ntoskrnl.exe
REM .
REM . ACPI Multiprocessor PC
REM . - halmacpi.dll (renamed to hal.dll)
REM . - ntkrpamp.exe (renamed to ntkrnlpa.exe)
REM . - ntkrnlmp.exe (renamed to ntoskrnl.exe)
REM .
REM ……………….. Explanation About Diferent HAL Versions ………………… ……..
REM .

SETLOCAL
SET PC-HAL=
SET NumberOfLogicalProcessors=
SET New-HAL=

For /F “Tokens=3 Delims= ” %%a in (’REG QUERY HKLM\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL000 /v HardwareID’) DO Set PC-HAL=%%a

IF %PC-HAL% == acpipic Set New-HAL=ACPI_Uniprocessor_PC
IF %PC-HAL% == acpiapic (
For /F %%a in (’@WMIC COMPUTERSYSTEM GET NumberOfLogicalProcessors /value^|find “NumberOfLogicalProcessors”‘) do Set %%a
)

IF %NumberOfLogicalProcessors% ==  Set New-HAL=HAL_NOT_DETECTED
IF %NumberOfLogicalProcessors% == 1 Set New-HAL=ACPI_Uniprocessor_PC
IF %NumberOfLogicalProcessors% == 2 Set New-HAL=ACPI_Multiprocessor_PC
IF %NumberOfLogicalProcessors% == 4 Set New-HAL=ACPI_Multiprocessor_PC

@echo Detected HAL: %New-HAL%
@echo Number of Logical Processors: %NumberOfLogicalProcessors%

endlocal