Partilhar via


Atualizar mídia de instalação do IoT Enterprise

Neste artigo, você configura seu ambiente de atualização de mídia e reúne todos os pré-requisitos necessários para atualizar o ambiente WinPE e o sistema operacional principal, instalar drivers

Preparar o ambiente de manutenção de mídia

  1. Inicie o PowerShell com privilégios de administrador.
    Usamos essa instância do PowerShell para o processo de manutenção de ponta a ponta da mídia de instalação para aplicar atualizações e, se necessário, incorporar drivers necessários que não fazem parte da mídia de instalação do Windows

    • Selecione Iniciar
    • Digite PowerShell
    • Clique com o botão direito Windows PowerShell
    • Selecione Executar como administrador
  2. Criar pastas para armazenar arquivos durante a manutenção de mídia
    Use o comando PowerShell New_Item para criar as seguintes pastas no computador do técnico para armazenar os arquivos necessários durante a manutenção de mídia.

    c:\MediaRefresh: Pasta principal para armazenar ficheiros durante a manutenção de média.
    c:\MediaRefresh\out: Cópia da mídia original atualizada durante a manutenção.
    c:\MediaRefresh\Packages\LCU: Atualização cumulativa mais recente c:\MediaRefresh\Packages\SSU: Atualização da Pilha de Serviço, se necessário
    c:\MediaRefresh\Drivers: Drivers de terceiros.
    c:\MediaRefresh\Scripts: Scripts de instalação personalizados. c:\MediaRefresh\WIM: Diretório de trabalho para atualizar boot.wim e install.wim

    md c:\MediaRefresh\Drivers
    md c:\MediaRefresh\Out
    md c:\MediaRefresh\Packages\LCU
    md c:\MediaRefresh\Packages\SSU
    md c:\MediaRefresh\Scripts
    md c:\MediaRefresh\WIM
    
  3. Copiar arquivos da mídia original
    Copie todos os arquivos da mídia de instalação original para c:\MediaRefresh\Out.

    1. Prossiga para a etapa b. se você tiver mídia física, caso contrário, você deve primeiro montar o ISO de instalação do Windows IoT Enterprise usando Mount-DiskImage e exibir a letra de unidade montada resultante usando Get-Volume.

      Mount-DiskImage -ImagePath <ISO Path> | Get-Volume
      

      Onde <ISO Path> é um caminho totalmente definido para a sua ISO

      Tome nota do DriveLetter, pois precisaremos usá-lo na próxima etapa.

    2. Copie arquivos da mídia de instalação original indicada aqui por <DriveLetter> para c:\MediaRefresh\Out pasta usando Robocopy.

      robocopy <DriveLetter>:\ c:\MediaRefresh\Out /Copy:DT /e
      

      Onde <DriveLetter> é a letra da unidade associada ao arquivo ISO montado

    3. Mova boot.wim e install.wim do c:\MediaRefresh\Out\Sources para c:\MediaRefresh\WIM pasta, a pasta de trabalho para atualizar os arquivos WIM, usando Robocopy.

      robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
      
    4. Prossiga para a próxima etapa se não montou uma ISO para o comando anterior, caso contrário, deve primeiro desmontar a ISO de instalação do Windows IoT Enterprise utilizando o comando Dismount-Diskimage

      Dismount-DiskImage -ImagePath <ISO Path>  
      

      Onde <ISO Path> é um caminho totalmente qualificado para o seu arquivo ISO.

  4. Reunir pacotes de manutenção

    Transfira o ficheiro cumulativo mais recente do Microsoft Servicing Update (MSU) para a pasta c:\MediaRefresh\Packages\LCU.

    Se uma dependência MSU (Servicing Stack Update) for necessária, descarregue-a para a pasta c:\MediaRefresh\Packages\SSU. Use a tabela a seguir para ajudá-lo a localizar atualizações para sua versão específica do Windows IoT Enterprise.

    Lançamento Versão Histórico de atualizações Atualizar catálogo
    Windows 11 IoT Enterprise LTSC 2024 [24H2] 26100 Mostrar histórico de atualizações Mostrar atualizações x64
    Mostrar atualizações do Arm64
    Windows 10 IoT Enterprise LTSC 2021 19044 Mostrar histórico de atualizações Mostrar atualizações x64
    Mostrar atualizações do Arm64
    Windows 10 IoT Enterprise LTSC 2019 17763 Mostrar histórico de atualizações Mostrar atualizações x64
    Mostrar atualizações do Arm64
    Windows 10 IoT Enterprise LTSC 2016 14393 Mostrar histórico de atualizações Mostrar atualizações x64
    Mostrar atualizações x86
    Windows 10 IoT Enterprise LTSC 2015 10240 Mostrar histórico de atualizações Mostrar atualizações x64
    Mostrar atualizações x86
  5. [Opcional] Reunir drivers de terceiros
    Coloque os drivers de terceiros necessários para o seu dispositivo num formato não compactado na raiz da pasta c:/MediaRefresh/drivers ou em subpastas de c:/MediaRefresh/drivers.

  6. [Opcional] Reunir scripts de configuração
    Coloque os scripts personalizados Setupcomplete.cmd e ErrorHandler.cmd, que são executados durante ou após o processo de Instalação do Windows, na pasta c:\MediaRefresh\Scripts.

    Para obter mais informações, consulte Adicionar um script personalizado à Instalação do Windows

Atualizar o ambiente de pré-instalação do Windows (WinPE)

O Ambiente de Pré-instalação do Windows (WinPE) está contido em boot.wim na mídia de instalação original na pasta \sources. Nesta seção, percorremos o processo de atualização do boot.wim com a atualização de serviço cumulativa mais recente e incorporamos drivers de terceiros, se necessário, no ambiente WinPE usando o Media Servicing Environment.

  1. Monte WinPE boot.wim

    1. A primeira etapa na atualização do ambiente WinPE é criar uma pasta temporária chamada mounted em c:\mediarefresh usando o comando PowerShell New-Item

      MD c:\MediaRefresh\mounted
      
    2. Antes de podermos atualizar o boot.wim, precisamos certificar-nos de que seu atributo de arquivo não está definido como ReadOnly. Use o comando PowerShell Set-ItemProperty para remover o atributo ReadOnly.

      Set-ItemProperty -Path "c:\mediarefresh\wim\boot.wim" -Name IsReadOnly -Value $false
      
    3. Agora podemos montar a imagem do WinPE armazenada no boot.wim no índice 2 usando o comando PowerShell Mount-WindowsImage

      Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
      
    4. O conteúdo da imagem do WinPE armazenada no boot.wim no índice 2 agora pode ser visualizado em c:\mediarefresh\mounted.

  2. Aplicar drivers de terceiros ao WinPE
    Instale drivers de terceiros coletados na pasta c:\mediarefresh\drivers para o WinPE em c:\mediarefresh\mounted usando o comando PowerShell Add-WindowsDriver.

    Observação

    Para fins de teste, você pode usar -ForceUnsigned para adicionar drivers não assinados e substituir o requisito de que os drivers devem ter uma assinatura digital. Para obter mais informações sobre os requisitos de assinatura de driver, consulte Visão Geral dos Controladores de Dispositivos e Implementação.

    Add-WindowsDriver -Path "c:\mediarefresh\Mounted" -Driver "c:\mediarefresh\drivers" -Recurse
    
  3. Aplicar atualizações de manutenção ao WinPE
    Aplique a atualização cumulativa mais recente e as suas dependências que descarregaste na pasta c:\mediarefresh\packages para o WinPE em c:\mediarefresh\mounted usando o comando do PowerShell Add-WindowsPackage. Esse processo levará vários minutos para ser concluído, no entanto, garante que sua imagem do Windows já tenha a atualização de serviço mais recente aplicada.

    1. Primeiro, aplique a dependência de atualização da pilha de serviços.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
      
    2. Agora aplique a atualização cumulativa mais recente.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
      

    Dica

    Se encontrar o erro 0x800f0823, a sua atualização de serviço pode ter uma dependência que deve ser aplicada primeiro. Se já descarregaste a dependência, tenta executar o Add-WindowsPackage anterior uma segunda vez. Se isso não resolver o problema, talvez seja necessário baixar outro pré-requisito para a atualização.

    • Anote o KB####### no nome do arquivo da atualização em c:\mediarefresh\packages.
    • Procure em support.microsoft.com utilizando o KB#######
    • Abra o primeiro tópico que corresponda e procure o termo "pré-requisito".
    • Baixe todos os pré-requisitos mencionados e execute o comando Add-WindowsPackage anterior novamente. Observe que talvez seja necessário executar o comando duas vezes para permitir que o pré-requisito seja aplicado primeiro.
    • Continue para a próxima etapa assim que o erro for resolvido.
  4. Copiar Setup.exe e setuphost.exe atualizados Antes de continuar, copie os setup.exe e setuphost.exe atualizados do WinPE em c:\mediarefresh\mounted\sources para c:\mediarefresh\out\sources usando Robocopy.

    1. Primeiro, precisamos remover o atributo ReadOnly no c:\mediarefresh\mounted\sources\setup.exe e c:\mediarefresh\mounted\sources\setuphost.exe usando o comando do PowerShell Set-ItemProperty.

      Set-ItemProperty -Path "c:\mediarefresh\out\sources\setup.exe" -Name IsReadOnly -Value $false
      Set-ItemProperty -Path "c:\mediarefresh\out\sources\setuphost.exe" -Name IsReadOnly -Value $false
      
    2. Agora podemos copiar setup.exe e setuphost.exe de c:\mediarefresh\mounted\sources para c:\mediarefresh\out\sources usando Robocopy.

      robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe
      robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setuphost.exe
      
  5. Desmontar e salvar alterações no WinPE

    Para concluir o processo de manutenção, use o comando do PowerShell Dismount-WindowsImage para salvar as alterações.

    Importante

    Antes de executar o comando Dismount-WindowsImage, certifique-se de que não tem quaisquer vistas do Explorador de Ficheiros ou janelas de comandos que estejam a visualizar conteúdos em c:\mediarefresh\mounted. O não cumprimento disto resulta em erro ao tentar desmontar.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. Excluir pasta temporária

    Após a desmontagem bem-sucedida do boot.wim, agora podemos remover a pasta temporária c:\mediarefresh\mounted usando o comando PowerShell Remove-Item

    RD c:\MediaRefresh\mounted
    
  7. Publicar Boot.wim em out pasta

    Agora copie o boot.wim atualizado do c:\mediarefresh\wim para o c:\mediarefresh\out\sources usando Robocopy.

    robocopy c:\mediarefresh\wim c:\mediarefresh\out\sources boot.wim
    

O Ambiente de Pré-instalação do Windows (WinPE), armazenado como boot.wim e setup.exe, ambos localizados em c:\mediarefresh\out\sources\, está totalmente atualizado.

Atualizar o Windows IoT Enterprise

A imagem do Windows IoT Enterprise está contida em install.wim na mídia de instalação original na pasta \sources. Na secção de Preparar o Ambiente de Manutenção de Mídia , movemos install.wim para uma pasta de trabalho. Nesta seção, percorremos o processo de atualização do install.wim com a mais recente atualização cumulativa de manutenção e incorporamos drivers de terceiros, se necessário pelo dispositivo de destino, usando o Media Servicing Environment. Quando a atualização estiver concluída, divida o install.wim em arquivos *.swm menores para que eles possam ser copiados para uma unidade flash formatada como FAT32.

  1. montar o sistema operacional install.wim

    1. A primeira etapa na atualização do ambiente WinPE é criar uma pasta temporária chamada mounted em c:\mediarefresh usando o comando PowerShell New-Item.

      MD c:\MediaRefresh\mounted
      
    2. Antes de podermos atualizar o install.wim, precisamos certificar-nos de que seu atributo file não está definido como ReadOnly. Use o comando PowerShell Set-ItemProperty para remover o atributo ReadOnly.

      Set-ItemProperty -Path "c:\mediarefresh\wim\install.wim" -Name IsReadOnly -Value $false
      
    3. Agora podemos montar a imagem do Windows IoT Enterprise armazenada em install.wim no índice 2 usando o comando PowerShell Mount-WindowsImage

      Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
      
    4. O conteúdo do repositório de imagens do Windows IoT Enterprise em install.wim no índice 2 agora pode ser visualizado em c:\mediarefresh\mounted.

  2. Instalar drivers de terceiros
    Instale os drivers de terceiros recolhidos na pasta c:\mediarefresh\drivers na imagem do sistema operativo em c:\mediarefresh\mounted usando o comando PowerShell Add-WindowsDriver. O parâmetro -recurse permite o processamento de subpastas.

    Add-WindowsDriver -Path "c:\mediarefresh\mounted" -Driver "c:\mediarefresh\drivers" -Recurse 
    

    Observação

    Para fins de teste, você pode usar -ForceUnsigned para adicionar drivers não assinados e substituir o requisito de que os drivers devem ter uma assinatura digital. Para obter mais informações sobre os requisitos de assinatura de driver, consulte Visão Geral dos Controladores de Dispositivos e Implementação.

  3. Adicionar scripts de instalação personalizados

    1. Antes de adicionar scripts de configuração personalizados à imagem do sistema operacional, primeiro crie uma pasta scripts em c:\mediarefresh\mounted\windows\setup\ usando o comando PowerShell New-Item .

      MD c:\mediarefresh\mounted\windows\setup\scripts
      
    2. Copie scripts do c:\mediarefresh\scripts para o c:\mediarefresh\mounted\windows\setup\scripts usando Robocopy.

      robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
      
  4. Aplicar pacotes de manutenção à imagem do SO
    Aplique a atualização cumulativa mais recente e as suas dependências que descarregaste na pasta c:\mediarefresh\packages para o WinPE em c:\mediarefresh\mounted usando o comando do PowerShell Add-WindowsPackage.

    1. Primeiro, aplique a dependência de atualização da pilha de serviços.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
      
    2. Agora aplique a atualização cumulativa mais recente.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
      

    Dica

    Se encontrar o erro 0x800f0823, a sua atualização de serviço pode ter uma dependência que deve ser aplicada primeiro. Se já descarregaste a sua dependência, tenta executar o comando anterior Add-WindowsPackage uma segunda vez. Se isso não resolver o problema, talvez seja necessário baixar outro pré-requisito para a atualização.

    • Anote o KB####### no nome do arquivo da atualização em c:\mediarefresh\packages.
    • Procure em support.microsoft.com utilizando o KB#######
    • Abra o primeiro tópico que corresponda e procure o termo "pré-requisito".
    • Faça o download dos pré-requisitos mencionados e execute o comando acima novamente. Observe que talvez seja necessário executar o comando duas vezes para permitir que o pré-requisito seja aplicado primeiro.
    • Continue para a próxima etapa assim que o erro for resolvido.
  5. Salvar e desmontar o install.wim atualizado
    Para concluir o processo de manutenção, use o comando do PowerShell Dismount-WindowsImage para salvar as alterações.

    Importante

    Antes de executar o comando Dismount-WindowsImage, certifique-se de que não tem quaisquer vistas do Explorador de Ficheiros ou janelas de comandos que estejam a visualizar conteúdos em c:\mediarefresh\mounted. O não cumprimento disto resulta em erro ao tentar desmontar.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. Excluir pasta temporária mounted
    Após a desmontagem bem-sucedida do boot.wim, agora podemos remover a pasta temporária c:\mediarefresh\mounted usando o comando PowerShell Remove-Item

    RD c:\mediarefresh\mounted
    
  7. Dividir WIM para suportar o sistema de arquivos FAT32
    Para garantir que o novo install.wim se encaixe em mídia flash formatada como FAT32, que tem um tamanho máximo de arquivo de 4 GB, divida o arquivo de Imagem do Windows (install.wim) em um conjunto de arquivos menores (.swm) com um tamanho máximo de 4.000 MB usando o comando PowerShell Split-WindowsImage. Os arquivos *.swm resultantes são gravados na pasta c:\mediarefresh\out\sources.

    Split-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -SplitImagePath "c:\mediarefresh\out\sources\install.swm" -FileSize 4000 -CheckIntegrity
    

A imagem de instalação do sistema operacional, originalmente armazenada como install.wim, agora é armazenada sob c:\mediarefresh\out\sources\ como install.swm e install2.swm que a instalação usa como se fossem o install.wimoriginal.

Copiar mídia atualizada para a unidade flash

Se você não criou uma unidade flash inicializável, faça-o antes de continuar, seguindo as etapas para Instalar o Windows a partir de uma unidade flash.

A etapa final da criação da mídia de instalação atualizada é copiar o conteúdo do c:\mediarefresh\out para sua unidade flash inicializável usando Robocopy.

robocopy c:\mediarefresh\out <DriveLetter>:\ /e

Onde <DriveLetter> é a letra da unidade associada à sua unidade flash

Instalar o Windows no novo dispositivo

  1. Conecte a unidade flash ao dispositivo alvo.

  2. Ligue o dispositivo e pressione a tecla que abre o menu de seleção do dispositivo de inicialização para o computador, como as teclas Esc/F10/F12. Selecione a opção que inicializa o dispositivo a partir da unidade flash.

    A Instalação do Windows é iniciada. Siga as instruções para instalar o Windows.

    Dica

    Pode ser necessário consultar as instruções do fabricante do dispositivo para configurá-lo para inicialização a partir da unidade flash se esse processo não funcionar no dispositivo.

  3. Quando a fase inicial da instalação estiver concluída e o dispositivo for reinicializado, a instalação poderá ser reiniciada desde o início. Se a Instalação for iniciada novamente, cancele a Instalação e desligue o computador, remova a unidade flash e ligue o dispositivo para continuar com a próxima fase da Instalação.

    Dica

    Se, por algum motivo, você encontrar um erro durante o processo de instalação, consulte os seguintes artigos para obter diretrizes de solução de problemas.

Roteiro completo

Esta seção contém um script completo que executa cada uma das etapas de manutenção de mídia sucessivamente automaticamente. Antes de usar este script, deve concluir a seção Preparar o Ambiente de Manutenção de Mídia deste artigo. Quando estiver pronto, copie o seguinte script do PowerShell para c:\mediarefresh\mediarefresh.ps1.

$LogFile = ".\MediaRefresh.log"
$LogDetail = ".\MediaRefreshDetail.log"

"================================================" >> $LogFile
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Starting MediaRefresh" >> $LogFile
"================================================" >> $LogFile
Write-Host "Updating Boot.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Boot.wim Update Started" >> $LogFile
Write-Host "     Preparing to mount boot.wim" -ForegroundColor Blue

(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Checking for existing .\Mounted folder" >> $LogFile

if ( -not (Test-Path -Path 'c:\MediaRefresh\mounted' -PathType Container)) { 
   (get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Create .\Mounted folder" >> $LogFile
   MD c:\MediaRefresh\mounted >> $LogDetail
   (get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Created .\Mounted folder" >> $LogFile
   }
   else {
   (get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     .\Mounted folder already existed" >> $LogFile 
   }

Write-Host "     Setting boot.wim file attributes to read-write" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Setting boot.wim file attributes to read-write" >> $LogFile
Set-ItemProperty -Path "c:\mediarefresh\wim\boot.wim" -Name IsReadOnly -Value $false | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Set boot.wim file attributes to read-write" >> $LogFile

Write-Host "     Mounting boot.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Mount-WindowsImage boot.wim Started" >> $LogFile
Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Mount-WindowsImage boot.wim Completed" >> $LogFile

Write-Host "     Installing Drivers" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsDrivers to boot.wim Started" >> $LogFile
Add-WindowsDriver -Path "c:\mediarefresh\mounted" -Driver "c:\mediarefresh\drivers" -Recurse >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsDrivers to boot.wim Completed" >> $LogFile

Write-Host "     Installing Servicing Stack Update" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsPackage SSU to boot.wim Started" >> $LogFile
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsPackage SSU to boot.wim Completed" >> $LogFile

Write-Host "     Installing Latest Cumulative Update" -ForegroundColor Blue
Write-Host "          Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsPackage LCU to boot.wim Started" >> $LogFile
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsPackage LCU to boot.wim Completed" >> $LogFile

Write-Host "     Setting read-write attribute on \out\sources\setup.exe" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Setting \out\sources\setup.exe file attributes to read-write" >> $LogFile
Set-ItemProperty -Path "c:\mediarefresh\out\sources\setup.exe" -Name IsReadOnly -Value $false >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Set \out\sources\setup.exe file attributes to read-write" >> $LogFile

Write-Host "     Copying updated setup.exe to \out\sources" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Copy updated setup.exe to .\out\sources Started" >> $LogFile
robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Copy updated setup.exe to .\out\sources Completed" >> $LogFile

Write-Host "     Saving and dismounting boot.wim" -ForegroundColor Blue
Write-Host "          Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Dismount-WindowsImage boot.wim Started" >> $LogFile
Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save -CheckIntegrity -LogLevel 3 >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Dismount-WindowsImage boot.wim Completed" >> $LogFile

Write-Host "     Removing \Mounted folder" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Removing .\mounted folder" >> $LogFile
RD c:\mediarefresh\mounted | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     .\mounted folder removed" >> $LogFile

Write-Host "     Copying updated boot.wim to \out\sources" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Copy boot.wim to .\out\sources Started" >> $LogFile
robocopy c:\mediarefresh\wim c:\mediarefresh\out\sources boot.wim | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Copy boot.wim to .\out\sources Completed" >> $LogFile
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Boot.wim Update Completed" >> $LogFile
Write-Host "Updating Boot.wim Complete" -ForegroundColor Blue

Write-Host "Updating Install.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Install.wim Update Started" >> $LogFile
Write-Host "     Preparing to mount install.wim" -ForegroundColor Blue

(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Checking for existing .\Mounted folder" >> $LogFile

if ( -not (Test-Path -Path 'c:\MediaRefresh\mounted' -PathType Container)) { 
   (get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Create .\Mounted folder" >> $LogFile
   MD c:\MediaRefresh\mounted  >> $LogDetail
   (get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Created .\Mounted folder" >> $LogFile
   }
   else {
   (get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     .\Mounted folder already existed" >> $LogFile 
   }

Write-Host "     Setting read-write attribute on install.wim" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Setting install.wim file attributes to read-write" >> $LogFile
Set-ItemProperty -Path "c:\mediarefresh\wim\install.wim" -Name IsReadOnly -Value $false | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Set install.wim file attributes to read-write" >> $LogFile

Write-Host "     Mounting install.wim" -ForegroundColor Blue
Write-Host "          Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Mount-WindowsImage install.wim Started" >> $LogFile
Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -Index 2 -Path "c:\mediarefresh\Mounted" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Mount-WindowsImage install.wim Completed" >> $LogFile


Write-Host "     Installing Drivers" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsDrivers to install.wim Started" >> $LogFile
Add-WindowsDriver -Path "c:\mediarefresh\mounted" -Driver "c:\mediarefresh\drivers" -Recurse  >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsDrivers to install.wim Completed" >> $LogFile

Write-Host "     Creating folder \Windows\Setup\Scripts" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Checking for existing \windows\setup\scripts folder" >> $LogFile
if ( -not (Test-Path -Path 'c:\mediarefresh\mounted\windows\setup\scripts' -PathType Container)) {
   (get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Create \windows\setup\scripts folder" >> $LogFile
   MD c:\mediarefresh\mounted\windows\setup\scripts >> $LogDetail
   (get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Created \windows\setup\scripts folder" >> $LogFile
   }
   else {
   (get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     \windows\setup\scripts already existed" >> $LogFile 
   }

Write-Host "     Copying Scripts to \Windows\Setup\Scripts" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Copy scripts to \windows\setup\scripts Started" >> $LogFile
robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Copy scripts to \windows\setup\scripts Completed" >> $LogFile

Write-Host "     Installing Servicing Stack Update" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsPackage SSU to install.wim Started" >> $LogFile
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"  >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsPackage SSU to install.wim Completed" >> $LogFile 

Write-Host "     Installing Latest Cumulative Update" -ForegroundColor Blue
Write-Host "          Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsPackage LCU to install.wim Started" >> $LogFile 
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU" >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Add-WindowsPackage LCU to install.wim Completed" >> $LogFile 

Write-Host "     Saving and dismounting install.wim" -ForegroundColor Blue
Write-Host "          Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Dismount-WindowsImage install.wim Started" >> $LogFile
Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save -CheckIntegrity -LogLevel 3 >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Dismount-WindowsImage install.wim Completed" >> $LogFile

Write-Host "     Removing \Mounted folder" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     Removing .\mounted folder" >> $LogFile
RD c:\mediarefresh\mounted | out-null
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " |     .\mounted folder removed" >> $LogFile

Write-Host "Updating Install.wim Complete" -ForegroundColor Blue
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Install.wim Update Completed" >> $LogFile

Write-Host "Splitting Install.wim" -ForegroundColor Blue
Write-Host "     Note: This process may take several minutes to complete." -ForegroundColor Cyan
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Split-WindowsImage Started" >> $LogFile
Split-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -SplitImagePath "c:\mediarefresh\out\sources\install.swm" -FileSize 4000 -CheckIntegrity >> $LogDetail
(get-date).ToString("yyyy-MM-dd HH:mm:ss") + " | Split-WindowsImage Completed" >> $LogFile

Write-Host "Update Complete" -ForegroundColor Blue
Write-Host "Copy contents of c:\mediarefresh\out to your flash drive" -ForegroundColor Blue

Outros recursos