Compartilhar via


Adicionar scripts de extensibilidade à restauração rápida

Os OEMs podem inserir scripts personalizados que são executados quando um usuário executa os recursos de redefinição do botão de push: Manter meus arquivos e Remover tudo.

Você pode usar scripts de extensibilidade ou pastas de aplicação automática para restaurar personalizações comuns que não são restauradas de outra forma, incluindo:

  • O Menu Iniciar
  • Barra de tarefas
  • OOBE
  • Unattend.xml personalizações

Além disso, os scripts de extensibilidade podem ajudar a executar outras tarefas, como:

  • Modificando dados ou partições de utilitário
  • Salvar e restaurar arquivos que normalmente não são mantidos pelo recurso Manter meus arquivos .

Observação

Se você incluir pastas de aplicação automática, não deverá incluir scripts de extensibilidade. Se você incluir pastas de aplicação automática e scripts extensibilty, as pastas de aplicação automática serão ignoradas.

Sobre como adicionar scripts de extensibilidade

Para adicionar scripts extensibilty, você precisa entender os seguintes conceitos:

Habilitar scripts durante a recuperação

Para adicionar scripts extensibilty à redefinição por botão, adicione todos os seguintes na C:\Recovery\OEM pasta:

  • Um arquivo de configuração de redefinição de botão por push (ResetConfig.xml) que define quais scripts executar.
  • Os scripts de extensibilidade
  • Todos os arquivos exigidos pelos scripts de extensibilidade.

Scripts de extensibilidade

Requisitos:

  • Os scripts são formatados como arquivos .cmd ou .exe.
  • Os scripts não dependem de componentes opcionais do Windows PE não presentes na imagem de Windows RE padrão (winre.wim).
  • Os scripts não dependem de binários (por exemplo, arquivos .exe ou .dll) não presentes na imagem de Windows RE padrão (winre.wim).
  • Os scripts são executados sem exibir uma GUI (interface gráfica do usuário).
  • Os scripts completam todas as funções pretendidas dentro de 5 minutos para cada ponto de extensibilidade.
  • O script não deve modificar as letras da unidade. Isso pode causar uma falha na recuperação.
  • O script deve retornar um 0 (zero) se tiver êxito. Se a redefinição do botão de pressão receber um valor diferente de 0, as seguintes etapas ocorrerão:
    • Se estiver executando o recurso Manter meus arquivos : todas as alterações do sistema serão revertidas. Se o script ou o arquivo executável for iniciado no menu configurações do computador Windows, o sistema será reiniciado no Windows. Se o script ou o arquivo executável for iniciado a partir de Windows RE ou do menu Inicialização avançada, o sistema permanecerá no Windows RE e exibirá uma mensagem de erro.
    • Se estiver executando o recurso Remover tudo : a falha será ignorada. O script ou arquivo executável prossegue para a próxima etapa no processo de redefinição e registra a falha.

Arquivo de configuração de redefinição por botão (ResetConfig.xml)

Adicione um arquivo ResetConfig.xml para apontar para os scripts de extensibilidade de redefinição de botão de pressão.

Esse arquivo deve ser salvo com o tipo de arquivo UTF-8. Não use codificação ANSI. Por exemplo: no Bloco de Notas, clique em Arquivo e clique em Salvar como. Na caixa Codificação , selecione UTF-8.

Salve esse arquivo e copie-o nas imagens do Windows como C:\Recovery\OEM\ResetConfig.xml.

Você pode usar o mesmo arquivo ResetConfig.xml para configurar o Windows para criar mídia de recuperação. Para obter mais informações, consulte Implantar Push-Button redefinir recursos.

Há quatro pontos de extensibilidade que você pode usar para apontar para scripts que são executados perto do início e do fim das operações Manter meus arquivos ou Remover tudo . Para personalizações comuns, geralmente você só precisa de um único script, conforme mostrado no script de exemplo abaixo.

Pontos de extensibilidade

O recurso Manter meus arquivos pode ser resumido nas seguintes etapas:

  1. O computador é inicializado no Ambiente de Recuperação do Windows (Windows RE).
  2. PONTO DE EXTENSIBILIDADE A (BasicReset_BeforeImageApply): adicione um script aqui para copiar arquivos, drivers ou configurações que não são migrados por padrão quando o usuário executa o recurso Manter meus arquivos .
  3. Contas de usuário, configurações e dados são coletados e movidos para um local temporário.
  4. Uma nova cópia do sistema operacional é construída em um local temporário usando arquivos do Repositório de Componentes do Windows.
  5. As personalizações armazenadas em pacotes de provisionamento em C:\Recovery\Customizations são aplicadas ao novo sistema operacional.
  6. Os drivers são copiados do sistema operacional existente e injetados no novo sistema operacional.
  7. Os aplicativos pré-instalados do Windows são restaurados do local de backup.
  8. As configurações críticas do sistema são aplicadas ao novo sistema operacional.
  9. O sistema operacional existente é movido para C:\Windows.old.
  10. O novo sistema operacional é movido para a raiz do volume do sistema operacional.
  11. PONTO DE EXTENSIBILIDADE B (BasicReset_AfterImageApply): adicione um script aqui para restaurar arquivos de personalização (unattend.xml, layoutmodification.xml) ou restaurar arquivos e configurações que você pode ter feito backup no ponto de extensibilidade A.
  12. O computador reinicializa para o novo sistema operacional.
  13. Durante a primeira inicialização, os dados e as configurações do usuário são reaplicados.

O recurso Remover tudo pode ser resumido nas seguintes etapas:

  1. O computador é inicializado no Ambiente de Recuperação do Windows (Windows RE).
  2. Contas de usuário, dados e aplicativos windows instalados e aplicativos da área de trabalho do Windows são removidos do volume do sistema operacional.
  3. Os volumes de dados são formatados (se solicitados pelo usuário).
  4. A eliminação de dados é executada em volumes de dados e do sistema operacional (se solicitado pelo usuário).
  5. PONTO DE EXTENSIBILIDADE C (FactoryReset_AfterDiskFormat): adicione um script aqui para reconfigurar partições de dados, se necessário. Importante: não modifique a partição do Windows.
  6. Uma nova cópia do sistema operacional é construída em um local temporário usando arquivos do Repositório de Componentes do Windows.
  7. As personalizações armazenadas em pacotes de provisionamento em C:\Recovery\Customizations são aplicadas ao novo sistema operacional.
  8. Os drivers são copiados do sistema operacional existente e injetados no novo sistema operacional.
  9. Os aplicativos Universais do Windows pré-instalados são restaurados de seu local de backup.
  10. O sistema operacional existente é removido.
  11. O novo sistema operacional é movido para a raiz do volume do sistema operacional.
  12. PONTO DE EXTENSIBILIDADE D (FactoryReset_AfterImageApply): adicione um script aqui para restaurar arquivos de personalização (unattend.xml, layoutmodification.xml).
  13. O computador reinicializa para o novo sistema operacional.
  14. O OOBE é iniciado.

Exemplo: restaurar as personalizações Menu Iniciar, Barra de Tarefas, OOBE e unattend.xml

Veja abaixo o script de exemplo e o arquivo ResetConfig.xml de exemplo que funcionam juntos para restaurar personalizações comuns durante a redefinição do botão de Windows 11. Você pode testar a recuperação por botão de pressão usando esses exemplos. Para testar com estes exemplos:

  • Salve o seguinte na C:\Recovery\OEM pasta:
    • O script de exemplo, CommonCustomizations.cmd
    • O arquivo de configuração de redefinição do botão de push,ResetConfig.xml
    • Uma cópia do arquivo de configuração do menu Iniciar (LayoutModification.json)
    • Uma cópia do arquivo de configuração da barra de tarefas (TaskbarLayoutModification.xml)
    • Uma cópia do arquivo unattend.xml

Veja abaixo o script de exemplo e o arquivo de ResetConfig.xml de exemplo que funcionam juntos para restaurar personalizações comuns durante a redefinição por botão de Windows 10. Você pode testar a recuperação por botão de pressão usando esses exemplos. Para testar com estes exemplos:

  • Salve o seguinte na C:\Recovery\OEM pasta:
    • O script de exemplo, CommonCustomizations.cmd
    • O arquivo de configuração de redefinição do botão de push,ResetConfig.xml
    • Uma cópia do arquivo de configuração do menu Iniciar (LayoutModification.xml)
    • Uma cópia do arquivo de configuração da barra de tarefas (TaskbarLayoutModification.xml)
    • Uma cópia do arquivo unattend.xml
  • Uma cópia de toda a pasta OOBE e suas subpastas, %WINDIR%\System32\Oobe\Info\ em C:\Recovery\OEM\OOBE\Info.

CommonCustomizations.cmd

Esse arquivo copia arquivos de personalização da pasta Recuperação para o sistema operacional recuperado.

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

Observação

Este exemplo aponta para o mesmo script duas vezes, para que ele possa ser usado pelos recursos Manter meus arquivos ou Remover tudo .

<?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>

Preservando e recuperando arquivos

Com o recurso Manter meus arquivos , você pode usar scripts de exemplo para preservar arquivos que, de outra forma, seriam removidos, colocando-os em um local temporário na memória. Não é possível manter arquivos com o recurso Remover tudo .

Você pode usar os seguintes locais para armazenamento, se necessário.

  • Unidade de RAM do Windows PE (X:). Essa unidade virtual é criada pelo Windows PE e permanece ativa durante o processo Manter meus arquivos . Você pode usá-lo com o recurso Manter meus arquivos para salvar dados antes que a partição seja atualizada e restaurar os dados após a conclusão da atualização de partição. A quantidade de memória disponível é limitada à quantidade de RAM no sistema, menos a quantidade de RAM necessária para as ferramentas de Windows RE quando totalmente expandida. Para obter instruções sobre como montar Windows RE e determinar o tamanho do arquivo totalmente expandido, consulte Personalizar Windows RE.

  • Partição OEM designada. Você pode deixar espaço extra em uma partição. Por exemplo, você pode deixar espaço na partição de imagem de recuperação e usar scripts para atribuir temporariamente uma letra de unidade e, em seguida, salvar arquivos nessa partição. No entanto, se o usuário usar a mídia de recuperação para reparticionar os discos, os dados nessas partições poderão ser perdidos durante o processo de recuperação.

Esses scripts de exemplo preservam os arquivos de log do Windows. Salve esses scripts na C:\Recovery\OEM pasta .

Exemplo de ResetConfig.xml que preserva arquivos

<?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>

Exemplo de script de extensibilidade que preserva arquivos

SaveLogFiles.cmd: salva arquivos de log em uma pasta temporária na memória

: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

Exemplo de script de extensibilidade que recupera arquivos

RetrieveLogFiles.cmd: recupera os arquivos que foram salvos na memória pelo 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

Método alternativo: copiar scripts após a implantação

Pouco tempo depois que o usuário conclui o OOBE, os scripts de recuperação são movidos da C:\Recovery\OEM pasta para a partição de recuperação, em R:\RecoveryImage\.

No caso improvável de a redefinição de botão de pressão ser usada antes de essa operação ocorrer, esses scripts podem não ser executados. Para evitar essa possibilidade, você pode copiar seus arquivos de recuperação diretamente para a partição de recuperação, R:\RecoveryImage\ depois que sua imagem tiver sido implantada.

Próximas etapas

Agora que você personalizou a experiência de redefinição de botão de pressão, é possível implantar a imagem de recuperação para redefinição por botão de push (Install.wim) na partição de imagem de recuperação.

Para copiar o script Diskpart, o arquivo ResetConfig.xml e a imagem de recuperação de redefinição do botão de Push-Button (install.wim) para a partição de imagem de recuperação do computador de destino, siga as instruções no tópico Implantar Push-Button Redefinir Recursos .

Visão geral da restauração por botão de comando

Criar mídia para executar Push-Button redefinir recursos

Implantar recursos de redefinição de Push-Button

Opções de linha de comando do REAgentC

Referência XML de ResetConfig