SUPINFO International University

SUPINFO Institute of Information Technology
Laboratoire Microsoft




Tous les Articles du Laboratoire Microsoft

Windows PE 1.2 et les nouveautés de la version 2004/1.5 (compatible Windows XP SP2)
Accueil > Articles > Système
Auteurs 
Guillaume DESFARGES
MGI CONSULTANTS
Architecte Systèmes - MVP


 Tous les articles de cet auteur

3,9/5

Bien


242028
398/1575

3.3. Scripting

3.3.1. Script inclus par défaut

Par défaut , comme vous pouvez le voir avec le fichier startnet.cmd, seule les ligne de commande (32 bits) sont incluses dans votre installation WinPE, ce qui vous permet quand même d’effectuer des opérations simple, comme :

-         Mapper un lecteur réseaux avec net use

-         Partager une ressource avec net share

-         Effectuer des opérations de partitionnement sur les disques locaux avec Diskpart.exe (création/suppression partition, conversion de disque dynamique, conversion de système de fichiers, etc…)

-         Faire des opérations de fichiers (rename, copy, xcopy, del, md etc…) sur des systèmes de fichier FAT/FAT32/NTFS

-         Etc…

Souvent ces tâches sont intéressantes dans le cadre d’une utilisation de support, mais vous pouvez vouloir utiliser WinPE dans un cadre plus approfondit comme par exemple les installation de systèmes avec des accès bases de données, ou encore avec du paramétrage plus « pointu », et souvent il vous faudra utiliser VBS, ou encore pour des accès au base de données ADO.

3.3.2. Visual Basic Script

WinPE n’a pas le langage vbscript intégré par défauts mais pour cela un script vbs a été ajouté à l’intérieur du répertoire WinPE, il se nomme BuildOptionalComponents .vbs qui vous permet d’installer et d’activer le support des fichiers .vbs, éléments ADO et aussi fichiers .hta, il vous suffit de le lancer avec un CD Source (Windows XP ou 2003) dans le lecteur pour que les fichiers nécessaire soit créés sur votre bureau (emplacement par défaut).

Ainsi sur votre bureau vous avec un répertoire Optional Components a été créé, il vous suffit ensuite de copier son contenu dans le répertoire de travail de WinPE (D:\Temppe toujours) et ensuite pour activer la gestion des différents éléments ils vont suffira d’exécuter la commande OC.BAT à l’intérieur de WinPE pour que par exemple les fichiers *.vbs soient exécutés avec wscript (par ailleurs cscript marchera aussi), si vous ne voulez pas l’exécuter à la main vous pouvez ajouter le contenu du fichier OC2.BAT à l’intérieur de startnet.cmd en enlevant la commande EXIT à la fin pour éviter de rebooter de façon intempestifs (la fermeture de la fenêtre de commande de WinPE provoque un reboot immédiat).

Vos script *.vbs à ce moment là marcheront, le problème est qu’aucune commande WMI ne marchera, en effet le support WMI n’est accessible que dans la version 1.5 (Windows XP SP2) dont nous indiquerons les changements plus loin.

3.3.3. Support pour le scripting 16 bits et les plu gins PEBuilder

Nous l’avons vu avec la partie sur Winbom.ini qu’il est parfois nécessaire d’utiliser le support pour les applications 16 bits à l’intérieur de WinPE, par exemple pour le fichier find.exe mais aussi pour pouvoir utiliser des utilitaires de manipulation de fichier ini, car les fichiers ini sont un reste de Windows 16bit et les appli les manipulant (setini.exe) utilisent aussi le support 16 bits.

Là une grosse difficulté apparaît car Microsoft ne donne aucune information là dessus mais par ailleurs du côté de chez BartPE et son PEBuilder un plug in DosPE existe et permet le support 16 Bits, nous allons voir ensemble comment adapter un plug in PEBuilder pour WinPE.

Téléchargeons le .cab Dospe sur le site de NwdskPE, prenez la ligne DosPE (4ème en partant du Haut) vous obtenez un simple fichier .inf (dospe.inf) qui est le fichier de plugins PeBuilder :

; dospe.inf
; PE Builder v3 plug-in INF file for (16bit) DOS support
; Plugin Created by Erwin Veermans (http://www.veder.com/nwdskpe/)

[Version]
Signature= "$Windows NT$"

[PEBuilder]
Name="Dos 16-bit support for WinPE"
Enable=1
Help="dospe.htm"
Version=1.0.6

[SourceDisksFiles]
; SystemRoot
_default.pif=1
system.ini=1
win.ini=1
; system32
ansi.sys=2
autoexec.nt=2
avicap.dll=2
avifile.dll=2
config.nt=2
command.com=2
comm.drv=2
commdlg.dll=2
compobj.dll=2
country.sys=2
crtdll.dll=2
ctl3dv2.dll=2
ddeml.dll=2
dosx.exe=2
ega.cpi=2
gdi.exe=2
himem.sys=2
keyboard.drv=2
keyboard.sys=2
krnl386.exe=2
lanman.drv=2
lzexpand.dll=2
mapi.dll=2,,4
mciavi.drv=2
mciseq.drv=2
mciwave.drv=2
mmsystem.dll=2
mouse.drv=2
msacm.dll=2
mscdexnt.exe=2
msvideo.dll=2
netapi.dll=2
ntdos.sys=2
ntdos404.sys=2
ntdos411.sys=2
ntdos412.sys=2
ntdos804.sys=2
ntio.sys=2
ntio404.sys=2
ntio411.sys=2
ntio412.sys=2
ntio804.sys=2
ntvdm.exe=2
ntvdmd.dll=2
ole2.dll=2
ole2disp.dll=2
ole2nls.dll=2
olecli.dll=2
olesvr.dll=2
pmspl.dll=2
progman.exe=2
rasapi16.dll=2,,4
redir.exe=2
shell.dll=2
sound.drv=2
storage.dll=2
system.drv=2
timer.drv=2
toolhelp.dll=2
typelib.dll=2
user.exe=2
vcdex.dll=2,,4
ver.dll=2
vga.drv=2
wfwnet.drv=2
win87em.dll=2
winoldap.mod=2
winsock.dll=2
winspool.exe=2
wow32.dll=2
wowdeb.exe=2
wowexec.exe=2
wowfax.dll=2
wowfaxui.dll=2
; System
avicap.dll=5
avifile.dll=5
commdlg.dll=5
keyboard.drv=5
lzexpand.dll=5
mciavi.drv=5
mciseq.drv=5
mciwave.drv=5
mmsystem.dll=5
mmtask.tsk=5,,4
mouse.drv=5
msvideo.dll=5
olecli.dll=5
olesvr.dll=5
shell.dll=5
sound.drv=5
stdole.tlb=5
system.drv=5
tapi.dll=5,,4
timer.drv=5
ver.dll=5
vga.drv=5
wfwnet.drv=5

[SetupReg.AddReg]
0x0, "ControlSet001\Control\WOW"
0x2, "ControlSet001\Control\WOW", "cmdline", "%SystemRoot%\system32\ntvdm.exe"
0x1, "ControlSet001\Control\WOW", "DefaultSeparateVDM", "no"
0x1, "ControlSet001\Control\WOW", "LPT_timeout", "15"
0x1, "ControlSet001\Control\WOW", "size", "0"
0x1, "ControlSet001\Control\WOW", "wowsize", "16"
0x2, "ControlSet001\Control\WOW", "wowcmdline", "%SystemRoot%\system32\ntvdm.exe -a %SystemRoot%\system32\krnl386"
0x1, "ControlSet001\Control\WOW", "KnownDLLs", "comm.drv commdlg.dll ctl3dv2.dll ddeml.dll keyboard.drv lanman.drv mmsystem.dll mouse.drv netapi.dll olecli.dll olesvr.dll pmspl.dll shell.dll sound.drv system.drv toolhelp.dll vga.drv wfwnet.drv win87em.dll winoldap.mod winsock.dll winspool.exe wowdeb.exe timer.drv rasapi16.dll compobj.dll storage.dll ole2.dll ole2disp.dll ole2nls.dll typelib.dll msvideo.dll avifile.dll msacm.dll mciavi.drv mciseq.drv mciwave.drv progman.exe avicap.dll mapi.dll"
0x4, "ControlSet001\Control\WOW", "SharedWowTimeout", 0x00000e10
0x3, "ControlSet001\Control\WOW", "RomFontPointers",\
  b0,52,00,c0,b0,4a,00,c0,b0,4e,00,c0,b0,60,00,c0,c0,60,00,c0,c0,70,00,c0
0x1, "ControlSet001\Control\Session Manager\Environment", "PATHEXT",".COM;.EXE;.BAT;.CMD"
0x0, "ControlSet001\Control\VirtualDeviceDrivers"
0x7, "ControlSet001\Control\VirtualDeviceDrivers", "VDD", ""

Pour interpréter ce fichier .inf nous allons le regarder section par section, ainsi nous avons deux sections que nous pouvons ignorer qui sont [Version] et [PEBuilder], ensuite nous avons la section [SourceDiskFiles] qui correspond à tout les fichier qu’il faut copier depuis votre source (CD Rom de Windows ou encore une de ces installations) vers le répertoire de travail WinPE. Cette section a des sous-sections (précédée d’un point virgule) avec le nom du répertoire à l’intérieur de %windir% (D:\temppe\i386 dans notre cas), ainsi vous avez un grand nombre de fichier à copier (les chiffres après le signe égal peuvent être ignoré) depuis une installation de Windows ou sinon depuis votre CD Windows, mais attention, dans ce cas là, il faudra utiliser la commande Expand pour extraire les fichiers compressés (avec l’attribut finissant par un underscore « _ »).

Ce qui vous fait une dizaine de fichiers à copier dans votre répertoire de travail, ensuite attaquons nous à la section [SetupReg.Addreg] qui, comme son nom l’indique, est là pour ajouter des entrées dans la base de registre, vous avez deux solutions soit utiliser la méthode décrite plus haut dans cet article pour ajouter des paramètres dans la base de registre (ici ce sont des clés à ajouter à HKLM\System donc dans le fichier WinPESys.inf) soit utiliser les capacités de chargement de ruche de regedit.

Donc pour cette nouvelle solution, ouvrez regedit, développez HKLM puis faites

Fichier->Charger la ruche

Puis sélectionnez le fichier correspondant à la ruche à éditer, dans notre cas HKLM\SYSTEM c’est %windir%\i386\setupreg.hiv (voir tableau), puis nommons cette ruche WinPE

Ainsi vous avez la ruche chargée dans regedit que vous pouvez éditer à votre guise

Maintenant il vous suffit de rajouter les clés et valeur correspondantes à l’intérieur de la section [SetupReg.AddReg], celle ci sont sous la forme

            Type_Valeur , Nom_de_la_clé , [Nom_de_la_valeur] , [Données_de_la_valeur]

On peux voir les correspondance sur le type de valeur dans le tableau de type indiqué plus haut dans l’article

Ainsi les deux première lignes

0x0, "ControlSet001\Control\WOW"

0x2, "ControlSet001\Control\WOW", "cmdline", "%SystemRoot%\system32\ntvdm.exe"

Peuvent être “traduites” par:

Création de la Clé WOW à l’intérieur de ControlSet001\Control

Création de la Valeur Cmdline ayant le type REG_EXPAND_SZ et les données « %SystemRoot%\system32\ntvdm.exe ».

Ainsi votre base de registre sera éditée petit à petit comme ceci :

Pour ensuite fermer l’accès à cette ruche il vous suffit de sélectionner la ruche ajouté (HKLM\WinPE ici) puis de faire Fichier->Décharger la ruche.

Ainsi vous avez modifié votre Base de registre pour prendre en compte le support 16 bits avec l’aide de fichier de configuration PEBuilder, de la même façon vous pourrez utiliser d’autre plug in pour par exemple ajouter un navigateur internet ou un gestionnaire de fichiers graphiques.

Si vous préférez toujours utiliser la méthode de modification des fichiers de registre .inf, voici les lignes à rajouter dans winpesys.inf

HKLM,"SYSTEM\ControlSet001\Control\WOW",,0x00000012
HKLM,"SYSTEM\ControlSet001\Control\WOW","cmdline",0x00020002,"%SystemRoot%\system32\ntvdm.exe"
HKLM,"SYSTEM\ControlSet001\Control\WOW","DefaultSeparateVDM",0x00000002,"no"
HKLM,"SYSTEM\ControlSet001\Control\WOW","LPT_Timeout",0x00000002,"15"
HKLM,"SYSTEM\ControlSet001\Control\WOW","Size",0x00000002,"no"
HKLM,"SYSTEM\ControlSet001\Control\WOW","wowSize",0x00000002,"16"
HKLM,"SYSTEM\ControlSet001\Control\WOW","wowcmdline",0x00020002,"%SystemRoot%\system32\ntvdm.exe -a %SystemRoot%\system32\krnl386"
HKLM,"SYSTEM\ControlSet001\Control\WOW","knowDLLs",0x00000002,"comm.drv commdlg.dll ctl3dv2.dll ddeml.dll keyboard.drv lanman.drv mmsystem.dll mouse.drv netapi.dll olecli.dll olesvr.dll pmspl.dll shell.dll sound.drv system.drv toolhelp.dll vga.drv wfwnet.drv win87em.dll winoldap.mod winsock.dll winspool.exe wowdeb.exe timer.drv rasapi16.dll compobj.dll storage.dll ole2.dll ole2disp.dll ole2nls.dll typelib.dll msvideo.dll avifile.dll msacm.dll mciavi.drv mciseq.drv mciwave.drv progman.exe avicap.dll mapi.dll"
HKLM,"SYSTEM\ControlSet001\Control\WOW","SharedWowTimeout",0x00010003,0x00000e10
HKLM,"SYSTEM\ControlSet001\Control\WOW","RomFontPointers",0x00030003,\b0,52,00,c0,b0,4a,00,c0,b0,4e,00,c0,b0,60,00,c0,c0,60,00,c0,c0,70,00,c0
HKLM,"SYSTEM\ControlSet001\Control\Session Manager\Environment",,0x00000012
HKLM,"SYSTEM\ControlSet001\Control\Session Manager\Environment","PATHEXT",0x00000002,".COM;.EXE;.BAT;.CMD"
HKLM,"SYSTEM\ControlSet001\Control\VirtualDeviceDrivers",,0x00000012
HKLM,"SYSTEM\ControlSet001\Control\VirtualDeviceDrivers","VDD",0x00010002,""
HKLM,"SYSTEM\ControlSet001\Control\Session Manager\Environment","ComSpec",0x00020002,"%SystemRoot%\system32\cmd.exe"
HKLM,"SYSTEM\ControlSet001\Control\Session Manager\Environment","Path",0x00020002,"%SystemRoot%\system32;%SystemRoot%"
HKLM,"SYSTEM\ControlSet001\Control\Session Manager\Environment","windir",0x00020002,"%SystemRoot%"

3.4. Intégration d’hot fixes à l’intérieur de WinPE

Même si WinPE est un système minimal, il est basé sur le noyau Windows XP et celui ci doit être patché face à des failles critiques, par exemple un WinPE 1.2 est toujours sensible à des attaques Blaster/Sasser, nous allons donc voir ensemble comment ajouter nos patchs de sécurité à notre installation de WinPE.

Pour ce faire, vous devez décompresser vos hot fixes dans un répertoire temporaire ensuite vous ajouter les fichiers :

-         .dll directement dans le répertoire system32

-         .les fichiers de pilotes directement dans le répertoire drivers

Voilà c’est tout ce qu’il y a à faire, attention ces manipulations s’appliquent à WinPE et absolument pas à WindowsXP, car sinon vous risquerez d’avoir de sacré surprises à l’installation ou à la restauration de votre dllcache.

3.5. Installation de WinPE sur un disque dur

Depuis le début nous avons vu pour l’utilisation de WinPE dans le cadre d’un démarrage du système sur le CD ROM, mais WinPE peux parfaitement démarrer sur un disque dur pour par exemple faire office de partition de « Rescue », les possesseur d’IBM T42 pourront se rendre compte que la partition « Acces IBM » est justement un partition WinPE.

La marche à suivre pour créer une partition WinPE est plutôt simple, vous réalisez votre CD WinPE et ensuite vous formatez votre future partition avec un OS à noyau NT (Windows NT4/2000/2003) pour que le MBR pointe bien sur ntldr (donc pas de partition avec un boot MS DOS)

Ensuite depuis votre CD WinPE vous copiez la totalité du répertoire i386 de votre CD et vous le renommez en minint.

Vous prenez le fichier i386\ntdetect.com que vous copiez dans la racine

Puis vous copiez le fichier i386\setupldr à la racine et vous le renommez en ntldr

Votre partition est prête à démarrer sur Windows PE, il vous suffit ensuite de l’activer si vous avez plusieurs partitions.

Vous pourrez ensuite ajouter les différents logiciels que vous estimez nécessaire pour votre partition de récupération.

3.6. Utilisation de WinPE dans le cadre d’une installation RIS

Cette partie demande quelques connaissance sur le RIS de 2003 vous avez d’ailleurs un article là dessus, et je ne vais pas vous ennuyer a paraphraser celui ci, mais sachez que ce qui vas se passer c’est que nous allons créer une image RIS de notre CD WinPE et automatiser totalement les écrans « bleus » (fichiers .OSC) de l’installation RIS pour qu’automatiquement cela soit l’image WinPE qui descende en mémoire sur l’ordinateur cible.

La première étape est de rajouter l’image d’un Windows XP (SP1 ou SP2 selon que vous soyez en version 1.2 ou 1.5), pour ce faire vous utilisez la commande

Risetup –add

Vous générez ainsi une image RIS Windows XP, mettez le nom que vous désirez pour l’image

Puis ouvrez le répertoire i386 de votre Winpe et copier le contenu de celui ci dans le répertoire i386 nouvellement créé dans votre partition RIS.

Allez dans le répertoire i386\Templates de votre nouvelle image RIS et éditer le fichier RIStndrd.sif avec le bloc notes, ensuite repéré le paramètre OSLoadOptions et ajoutez le paramétrage « /minint » en plus des autres.

Voilà vous image RIS WinPE est prête, maintenant nous allons voir comment éditer les différents écran du RIS pour qu’ils ne soit pas affiché et qu’immédiatement lors du boot RIS que cela soit WinPE qui s’affiche au lieu des choix en écran bleu.

En premier lieu vous pouvez supprimer le message « Press F12 to boot » pour empêcher d’avoir à appuyer sur F12 pour démarrer l’accès RIS, cette possibilité est intéressante si vous avez la possibilité de démarrer sur la carte réseau via une touche spécifique du BIOS (F12 aussi souvent) et ainsi éviter d’avoir la carte réseaux dans votre processus de démarrage. Pour ce faire vous allez dans \RemoteInstall\OSChooser\i386 pour renommer le fichier Startrom.n12 (n12 comme « no F12 ») en Startrom.com et renommer l’ancien fichier en Startrom.old .

Ensuite il faut automatiser toute la partie OSChooser, ce qu’il faut faire c’est rentrer tout les bon paramètres dans vos fichiers .osc et en plus rajouter le Tag <META ACTION=AUTOENTER> au début de chacun d’eux.

Dans une installation par défaut voici les .OSC à modifier, ils sont dans \RemoteInstall\OsChooser et ensuite dans les répertoire correspondant à votre langage

-         Welcome.osc : Page d’acceuil

-         Login.osc : Page de connexion à active Directory

-         OSChoice.osc : Page de choix d’images RIS, n’apparaît que si vous avez plusieurs images RIS

-         Install.osc : Page récapitulative sur la machine à installer

Pour chacun de ces fichiers la balise est à rajouter, si vous n’avez mis que l’image WinPE dans le RIS le seul fichier à customiser en plus sera Login.osc où vous devrez rajouter un login et mot de passe pour un utilisateur du domaine.

Dans les partie <INPUT NAME=  « USERNAME » et « Password » vous devrez rajouter dans la balise la propriété VALUE=le login et le mot de passe correspondant.

Ainsi vous passez chacun des écrans automatiquement et vous arriverez directement sur WinPE, à partir de là vous pouvez par exemple exécuter diskpart pour partitionner le disque d’installation ou tout autre disque comme bon vous semble, de plus vous pourrez créer une petite interface avec des cases à cocher pour générer une image unnatend avec winnt32.exe la plus exotique possible

Une autre utilisation c’est la possibilité de descendre votre CD WinPE à travers le réseau, comme cela votre technicien de support n’a plus à se déplacer avec le CD WinPE de sauvetage créé, il suffit juste de redémarrer la machine à problème sur le réseau et ensuite effectuer les tâches de support habituelles.


1. Introduction
2. Présentation
    2.1. OPK et licence
    2.2. ERD Commander et BartPE
    2.3. Installation
3. Paramétrage
    3.1. Edition de la base de registre pour avoir un clavier français
    3.2. Réseaux et Winbom.ini
    3.3. Scripting
    3.4. Intégration d'hot fixes à l'intérieur de WinPE
    3.5. Installation de WinPE sur un disque dur
    3.6. Utilisation de WinPE dans le cadre d'une installation RIS
4. Nouveautés de la version du Service Pack 2 (OPK 1.5)
    4.1. Support WMI
    4.2. Firewall
    4.3. Détection Plug'n Play
    4.4. Drvinst.exe
5. Conclusion



En Savoir Plus 
Evaluez cet article 


Pour afficher ou poster un commentaire, cliquez sur ce lien : Forum-Microsoft



Retrouvez ci-dessous les autres sections du Laboratoire Microsoft