Ajouter des scripts d’extensibilité pour la réinitialisation par bouton push

Les oem peuvent insérer des scripts personnalisés qui s’exécutent lorsqu’un utilisateur exécute les fonctionnalités de réinitialisation par bouton push : Conserver mes fichiers et Tout supprimer.

Vous pouvez utiliser des scripts d’extensibilité ou des dossiers d’application automatique pour restaurer les personnalisations courantes qui ne sont pas restaurées, notamment :

  • Menu Démarrer
  • Barre des tâches
  • OOBE
  • Unattend.xml personnalisations

En outre, les scripts d’extensibilité peuvent vous aider à effectuer d’autres tâches, telles que :

Notes

Si vous incluez les dossiers d’application automatique, vous ne devez pas inclure de scripts d’extensibilité. Si vous incluez à la fois des dossiers d’application automatique et des scripts extensibilty, les dossiers d’application automatique sont ignorés.

À propos de l’ajout de scripts d’extensibilité

Pour ajouter des scripts extensibilty, vous devez comprendre les concepts suivants :

Activer les scripts pendant la récupération

Pour ajouter des scripts extensibilty à la réinitialisation par bouton push, ajoutez tous les éléments suivants dans le C:\Recovery\OEM dossier :

  • Fichier de configuration de réinitialisation (ResetConfig.xml) qui définit les scripts à exécuter.
  • Scripts d’extensibilité
  • Tous les fichiers requis par les scripts d’extensibilité.

Scripts d’extensibilité

Conditions requises :

  • Les scripts sont mis en forme sous forme de fichiers .cmd ou .exe.
  • Les scripts ne dépendent pas des composants facultatifs Windows PE qui ne sont pas présents dans l’image Windows RE par défaut (winre.wim).
  • Les scripts ne dépendent pas de fichiers binaires (par exemple, des fichiers .exe ou .dll) qui ne sont pas présents dans l’image Windows RE par défaut (winre.wim).
  • Les scripts s’exécutent sans afficher d’interface utilisateur graphique (GUI).
  • Les scripts exécutent toutes les fonctions prévues dans un délai de 5 minutes pour chaque point d’extensibilité.
  • Le script ne doit pas modifier les lettres de lecteur. Cela peut entraîner l’échec de la récupération.
  • Le script doit retourner un 0 (zéro) en cas de réussite. Si la réinitialisation par bouton push reçoit une valeur autre que 0, les étapes suivantes se produisent :
    • Si vous exécutez la fonctionnalité Conserver mes fichiers : toutes les modifications apportées au système sont restaurées. Si le script ou le fichier exécutable est lancé à partir du menu paramètres du PC Windows, le système redémarre dans Windows. Si le script ou le fichier exécutable est lancé à partir de Windows RE ou du menu Démarrage avancé, le système reste dans Windows RE et affiche un message d’erreur.
    • Si vous exécutez la fonctionnalité Supprimer tout : l’échec est ignoré. Le script ou le fichier exécutable passe à l’étape suivante du processus de réinitialisation et journalise l’échec.

Fichier de configuration de réinitialisation par bouton push (ResetConfig.xml)

Ajoutez un fichier ResetConfig.xml pour pointer vers vos scripts d’extensibilité de réinitialisation par bouton push.

Ce fichier doit être enregistré avec le type de fichier UTF-8. N’utilisez pas le codage ANSI. Par exemple : dans le Bloc-notes, cliquez sur Fichier, puis sur Enregistrer sous. Dans la zone Encodage , sélectionnez UTF-8.

Enregistrez ce fichier et copiez-le dans les images Windows en tant que C:\Recovery\OEM\ResetConfig.xml.

Vous pouvez utiliser le même fichier ResetConfig.xml pour configurer Windows afin de créer un support de récupération. Pour plus d’informations, consultez Déployer Push-Button fonctionnalités de réinitialisation.

Il existe quatre points d’extensibilité que vous pouvez utiliser pour pointer vers des scripts qui s’exécutent près du début et de la fin des opérations Conserver mes fichiers ou Supprimer tout . Pour les personnalisations courantes, vous n’avez généralement besoin que d’un seul script, comme indiqué dans l’exemple de script ci-dessous.

Points d’extensibilité

La fonctionnalité Conserver mes fichiers peut être résumée en procédant comme suit :

  1. Le PC démarre dans l’environnement de récupération Windows (Windows RE).
  2. POINT D’EXTENSIBILITÉ A (BasicReset_BeforeImageApply) : ajoutez un script ici pour copier des fichiers, des pilotes ou des paramètres qui ne sont pas migrés par défaut lorsque l’utilisateur exécute la fonctionnalité Conserver mes fichiers .
  3. Les comptes d’utilisateur, les paramètres et les données sont collectés et déplacés vers un emplacement temporaire.
  4. Une nouvelle copie du système d’exploitation est construite dans un emplacement temporaire à l’aide de fichiers du Magasin de composants Windows.
  5. Les personnalisations stockées dans les packages d’approvisionnement sous C:\Recovery\Personnalisations sont appliquées au nouveau système d’exploitation.
  6. Les pilotes sont copiés à partir du système d’exploitation existant et injectés dans le nouveau système d’exploitation.
  7. Les applications Windows préinstallées sont restaurées à partir de leur emplacement de sauvegarde.
  8. Les paramètres critiques du système d’exploitation sont appliqués au nouveau système d’exploitation.
  9. Le système d’exploitation existant est déplacé vers C:\Windows.old.
  10. Le nouveau système d’exploitation est déplacé vers la racine du volume du système d’exploitation.
  11. POINT D’EXTENSIBILITÉ B (BasicReset_AfterImageApply) : ajoutez un script ici pour restaurer les fichiers de personnalisation (unattend.xml, layoutmodification.xml) ou restaurer les fichiers et les paramètres que vous avez peut-être sauvegardés au point d’extensibilité A.
  12. Le PC redémarre sur le nouveau système d’exploitation.
  13. Lors du premier démarrage, les données et les paramètres utilisateur sont réappliqués.

La fonctionnalité Supprimer tout peut être résumée en procédant comme suit :

  1. Le PC démarre dans l’environnement de récupération Windows (Windows RE).
  2. Les comptes d’utilisateur, les données et les applications Windows installées et les applications de bureau Windows sont supprimés du volume du système d’exploitation.
  3. Les volumes de données sont mis en forme (si l’utilisateur le demande).
  4. L’effacement des données est effectué sur le système d’exploitation et les volumes de données (si l’utilisateur le demande).
  5. POINT D’EXTENSIBILITÉ C (FactoryReset_AfterDiskFormat) : ajoutez un script ici pour reconfigurer les partitions de données si nécessaire. Important : Ne modifiez pas la partition Windows.
  6. Une nouvelle copie du système d’exploitation est construite dans un emplacement temporaire à l’aide de fichiers du Magasin de composants Windows.
  7. Les personnalisations stockées dans les packages d’approvisionnement sous C:\Recovery\Personnalisations sont appliquées au nouveau système d’exploitation.
  8. Les pilotes sont copiés à partir du système d’exploitation existant et injectés dans le nouveau système d’exploitation.
  9. Les applications Windows universelles préinstallées sont restaurées à partir de leur emplacement de sauvegarde.
  10. Le système d’exploitation existant est supprimé.
  11. Le nouveau système d’exploitation est déplacé vers la racine du volume du système d’exploitation.
  12. POINT D d’EXTENSIBILITÉ (FactoryReset_AfterImageApply) : ajoutez un script ici pour restaurer les fichiers de personnalisation (unattend.xml, layoutmodification.xml).
  13. Le PC redémarre sur le nouveau système d’exploitation.
  14. OOBE démarre.

Exemple : Restaurer le menu Démarrer, la barre des tâches, l’OOBE et les personnalisations unattend.xml

Vous trouverez ci-dessous un exemple de script et un exemple de fichier ResetConfig.xml qui fonctionnent ensemble pour restaurer les personnalisations courantes lors de la réinitialisation par bouton push sur Windows 11. Vous pouvez tester la récupération par bouton Push à l’aide de ces exemples. Pour tester avec ces exemples :

  • Enregistrez les éléments suivants dans le C:\Recovery\OEM dossier :
    • L’exemple de script , CommonCustomizations.cmd
    • Le fichier de configuration de réinitialisation par bouton poussin, ResetConfig.xml
    • Copie du fichier de configuration du menu Démarrer (LayoutModification.json)
    • Copie du fichier de configuration de la barre des tâches (TaskbarLayoutModification.xml)
    • Copie du fichier unattend.xml

Vous trouverez ci-dessous un exemple de script et un exemple de fichier ResetConfig.xml qui fonctionnent ensemble pour restaurer les personnalisations courantes lors de la réinitialisation par bouton push sur Windows 10. Vous pouvez tester la récupération par bouton Push à l’aide de ces exemples. Pour tester avec ces exemples :

  • Enregistrez les éléments suivants dans le C:\Recovery\OEM dossier :
    • L’exemple de script , CommonCustomizations.cmd
    • Le fichier de configuration de réinitialisation par bouton poussin, ResetConfig.xml
    • Copie du fichier de configuration du menu Démarrer (LayoutModification.xml)
    • Une copie du fichier de configuration de la barre des tâches (TaskbarLayoutModification.xml)
    • Copie du fichier unattend.xml
  • Copiez l’intégralité du dossier OOBE et de ses sous-dossiers dans %WINDIR%\System32\Oobe\Info\C:\Recovery\OEM\OOBE\Info.

CommonCustomizations.cmd

Ce fichier copie les fichiers de personnalisation du dossier Récupération dans le système d’exploitation récupéré.

rem CommonCustomizations.cmd

rem Define %TARGETOS% as the Windows folder (This later becomes C:\Windows) 
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C

rem Define %TARGETOSDRIVE% as the Windows partition (This later becomes C:)
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A

rem Add back Windows settings, Start menu, Taskbar, and OOBE.xml customizations
copy "%TARGETOSDRIVE%\Recovery\OEM\Unattend.xml" "%TARGETOS%\Panther\Unattend.xml" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\LayoutModification.json" "%TARGETOSDRIVE%\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.json" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\TaskbarLayoutModification.xml" "%TARGETOS%\OEM\TaskbarLayoutModification.xml" /y
xcopy "%TARGETOSDRIVE%\Recovery\OEM\OOBE\Info" "%TARGETOS%\System32\Oobe\Info\" /s

rem Recommended: Create a pagefile for devices with 1GB or less of RAM.
wpeutil CreatePageFile /path=%TARGETOSDRIVE%\PageFile.sys /size=256

EXIT 0
rem CommonCustomizations.cmd

rem Define %TARGETOS% as the Windows folder (This later becomes C:\Windows) 
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C

rem Define %TARGETOSDRIVE% as the Windows partition (This later becomes C:)
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A

rem Add back Windows settings, Start menu, Taskbar, and OOBE.xml customizations
copy "%TARGETOSDRIVE%\Recovery\OEM\Unattend.xml" "%TARGETOS%\Panther\Unattend.xml" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\LayoutModification.xml" "%TARGETOSDRIVE%\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\TaskbarLayoutModification.xml" "%TARGETOS%\OEM\TaskbarLayoutModification.xml" /y
xcopy "%TARGETOSDRIVE%\Recovery\OEM\OOBE\Info" "%TARGETOS%\System32\Oobe\Info\" /s

rem Recommended: Create a pagefile for devices with 1GB or less of RAM.
wpeutil CreatePageFile /path=%TARGETOSDRIVE%\PageFile.sys /size=256

EXIT 0

ResetConfig.xml

Notes

Cet exemple pointe deux fois vers le même script. Il peut donc être utilisé par les fonctionnalités Conserver mes fichiers ou Supprimer tout .

<?xml version="1.0" encoding="utf-8"?>
<!-- ResetConfig.xml -->
<Reset>
  <Run Phase="BasicReset_AfterImageApply">
    <Path>CommonCustomizations.cmd</Path>
    <Duration>2</Duration>
  </Run>
  <Run Phase="FactoryReset_AfterImageApply">
    <Path>CommonCustomizations.cmd</Path>
    <Duration>2</Duration>
  </Run>
  <!-- May be combined with Recovery Media Creator
       configurations – insert SystemDisk element here -->
</Reset>

Conservation et récupération de fichiers

Avec la fonctionnalité Conserver mes fichiers , vous pouvez utiliser des exemples de scripts pour conserver des fichiers qui seraient autrement supprimés, en les plaçant dans un emplacement temporaire en mémoire. Vous ne pouvez pas conserver les fichiers avec la fonctionnalité Tout supprimer .

Vous pouvez utiliser les emplacements suivants pour le stockage, si nécessaire.

  • Lecteur RAM Windows PE (X:). Ce lecteur virtuel est créé par Windows PE et reste actif pendant le processus Conserver mes fichiers . Vous pouvez l’utiliser avec la fonctionnalité Conserver mes fichiers pour enregistrer les données avant l’actualisation de la partition et pour restaurer les données une fois l’actualisation de la partition terminée. La quantité de mémoire disponible est limitée à la quantité de RAM sur le système, moins la quantité de RAM nécessaire pour les outils Windows RE lorsqu’ils sont entièrement développés. Pour obtenir des instructions sur le montage Windows RE et la détermination de la taille de fichier entièrement développée, consultez Personnaliser Windows RE.

  • Partition OEM désignée. Vous pouvez laisser de l’espace supplémentaire sur une partition. Par exemple, vous pouvez laisser de la place sur la partition d’image de récupération et utiliser des scripts pour affecter temporairement une lettre de lecteur, puis enregistrer des fichiers dans cette partition. Toutefois, si votre utilisateur utilise le support de récupération pour repartitionner les disques, les données sur ces partitions peuvent être perdues pendant le processus de récupération.

Ces exemples de scripts conservent les fichiers journaux Windows. Enregistrez ces scripts dans le C:\Recovery\OEM dossier .

Exemple de ResetConfig.xml qui conserve des fichiers

<?xml version="1.0" encoding="utf-8"?>
<!-- ResetConfig.xml -->
   <Reset>
      <Run Phase="BasicReset_BeforeImageApply">
         <Path>SaveLogFiles.cmd</Path>
         <Duration>4</Duration>
      </Run>      
      <Run Phase="BasicReset_AfterImageApply">
         <Path>RetrieveLogFiles.cmd</Path>
         <Duration>2</Duration>
      </Run>
      <!-- May be combined with Recovery Media Creator
       configurations – insert SystemDisk element here -->
   </Reset>

Exemple de script d’extensibilité qui conserve les fichiers

SaveLogFiles.cmd : enregistre les fichiers journaux dans un dossier temporaire en mémoire

:rem == SaveLogFiles.cmd

:rem == 1. Use the registry to identify the location of
:rem       the new operating system and the primary hard
:rem       drive. For example, 
:rem       %TARGETOS% may be defined as C:\Windows
:rem       %TARGETOSDRIVE% may be defined as C:
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C

for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A

:rem == 2. Copy old Windows logs to a temporary folder in memory
mkdir X:\Temp
xcopy %TARGETOS%\Logs\*.* X:\temp\OldLogs /cherkyi

EXIT 0

Exemple de script d’extensibilité qui récupère des fichiers

RetrieveLogFiles.cmd : récupère les fichiers qui ont été enregistrés en mémoire par le script SaveLogFiles.cmd.

:rem == RetrieveLogFiles.cmd

:rem == This sample script retrieves the files that 
:rem    were saved in memory by 
:rem    SaveLogFiles.cmd,
:rem    and adds them back to the system.

:rem == 1. Use the registry to identify the location of
:rem       the new operating system and the primary drive.
:rem        
:rem       %TARGETOS% is the Windows folder 
:rem          (This later becomes C:\Windows)
:rem       %TARGETOSDRIVE% is the Windows partition 
:rem          (This later becomes C:)
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A

:rem == 2. Copy the old logs to the new OS 
:rem       at C:\Windows\OldLogs
mkdir %TARGETOS%\OldLogs
xcopy X:\Temp\OldLogs\* %TARGETOS%\OldLogs /cherkyi

EXIT 0

Autre méthode : copier des scripts après le déploiement

Peu de temps après que votre utilisateur a terminé OOBE, les scripts de récupération sont déplacés du C:\Recovery\OEM dossier vers la partition de récupération, à l’adresse R:\RecoveryImage\.

Dans le cas peu probable où la réinitialisation par bouton poussur est utilisée avant que cette opération n’ait eu lieu, ces scripts peuvent ne pas s’exécuter. Pour éviter cette possibilité, vous pouvez copier vos fichiers de récupération directement dans la partition de récupération, R:\RecoveryImage\ une fois votre image déployée.

Étapes suivantes

Maintenant que vous avez personnalisé l’expérience de réinitialisation par bouton poussoir, vous pouvez déployer l’image de récupération pour la réinitialisation par bouton-poussoir (Install.wim) sur la partition de l’image de récupération.

Pour copier le script Diskpart, le fichier ResetConfig.xml et l’image de récupération de réinitialisation (install.wim) sur la partition de l’image de récupération du PC de destination, suivez les instructions de la rubrique Déployer Push-Button Réinitialiser les fonctionnalités .

Vue d’ensemble de la réinitialisation par bouton

Créer un média pour exécuter Push-Button réinitialiser les fonctionnalités

Déployer Push-Button fonctionnalités de réinitialisation

Options de ligne de commande REAgentC

Référence XML ResetConfig