Atualizar mídia de instalação do IoT Enterprise
Neste artigo, você configurará seu ambiente de atualização de mídia e irá reunir todos os pré-requisitos necessários para atualizar o ambiente do WinPE, o sistema operacional principal e instalar drivers
Preparar o ambiente de manutenção de mídia
Inicie o PowerShell com privilégios de Administrador.
Usamos essa instância do PowerShell para o processo de ponta a ponta de manutenção da mídia de instalação para aplicar atualizações e, se for preciso, incorporar os drivers necessários que não fazem parte da mídia de instalação do Windows- Selecione Iniciar
- Tipo do PowerShell
- Clique com o botão direito do mouse em Windows PowerShell
- Selecione Executar como administrador
Criar pastas para armazenar arquivos durante a manutenção de mídia
Use o comando do PowerShell New_Item para criar as pastas a seguir no computador técnico para armazenar os arquivos necessários durante a manutenção de mídia.c:\MediaRefresh: pasta pai para armazenar arquivos 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 de pilha de manutençã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.wimmd 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
Copiar arquivos da mídia original
Copie todos os arquivos da mídia de instalação original parac:\MediaRefresh\Out
.Prossiga para a etapa
b.
se você tiver mídia física; caso contrário, deverá primeiro montar o ISO de instalação do Windows IoT Enterprise usando Mount-DiskImage e exibir a letra da unidade montada resultante usando Get-Volume.Mount-DiskImage -ImagePath <ISO Path> | Get-Volume
Em que
<ISO Path>
é um caminho totalmente qualificado para o seu ISOAnote o DriveLetter, pois precisaremos usá-lo na próxima etapa.
Copie arquivos da mídia de instalação original indicada aqui por
<DriveLetter>
para a pastac:\MediaRefresh\Out
usando Robocopy.robocopy <DriveLetter>:\ c:\MediaRefresh\Out /Copy:DT /e
Em que
<DriveLetter>
é a letra da unidade associada ao arquivo ISO montadoMova boot.wim e install.wim de
c:\MediaRefresh\Out\Sources
para a pastac:\MediaRefresh\WIM
, a pasta de trabalho para atualizar os arquivos WIM, usando o Robocopy.robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
Prossiga para a próxima etapa se você não montou um ISO para o comando anterior; caso contrário, primeiro você deve desmontar o ISO de instalação do Windows IoT Enterprise usando Dismount-Diskimage
Dismount-DiskImage -ImagePath <ISO Path>
Em que
<ISO Path>
é um caminho totalmente qualificado para o seu arquivo ISO.
Reunir pacotes de manutenção
Baixe o arquivo cumulativo mais recente da MSU (Microsoft Servicing Update) para a pasta
c:\MediaRefresh\Packages\LCU
.Se uma dependência da atualização da pilha de manutenção (MSU) for necessária, baixe-a para a pasta
c:\MediaRefresh\Packages\SSU
. Use a tabela a seguir para ajudá-lo a localizar as atualizações para sua versão específica do Windows IoT Enterprise.Versão Versão Histórico de atualizações Catálogo de atualização Windows 11 IoT Enterprise LTSC 2024 [24H2] 26100 Mostrar histórico de atualizações Mostrar atualizações x64 Mostrar atualizações
do Arm64Windows 10 IoT Enterprise LTSC 2021 19044 Mostrar histórico de atualizações Mostrar atualizações x64 Mostrar atualizações
ARM64Windows 10 IoT Enterprise LTSC 2019 17763 Mostrar histórico de atualizações Mostrar atualizações x64 Mostrar atualizações
ARM64Windows 10 IoT Enterprise LTSC 2016 14393 Mostrar histórico de atualizações Mostrar atualizações
x64 Mostrar atualizações x86Windows 10 IoT Enterprise LTSC 2015 10240 Mostrar histórico de atualizações Mostrar atualizações
x64 Mostrar atualizações x86[Opcional] Reúna drivers de terceiros
Coloque os drivers de terceiros necessários para seu dispositivo em um formato descompactado na raiz da pastac:/MediaRefresh/drivers
ou como subpastas dec:/MediaRefresh/drivers
.[Opcional] Reúna scripts de configuração
Coloque seus scripts personalizadosSetupcomplete.cmd
eErrorHandler.cmd
executados durante ou após o processo de Instalação do Windows na pastac:\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 WinPE (Ambiente de Pré-Instalação do Windows) está contido em boot.wim
na mídia de instalação original na pasta \sources
. Nesta seção, percorreremos o processo de atualização de boot.wim
com a atualização de manutenção cumulativa mais recente e iremos incorporar drivers de terceiros, se necessário, ao ambiente WinPE usando o Ambiente de Manutenção de Mídia.
Montar boot.wim do WinPE
A primeira etapa na atualização do ambiente WinPE é criar uma pasta temporária chamada
mounted
emc:\mediarefresh
usando o comando do PowerShell New-ItemMD c:\MediaRefresh\mounted
Antes de atualizar o
boot.wim
, precisamos garantir que seu atributo de arquivo não esteja definido como ReadOnly. Use o comando do PowerShell Set-ItemProperty para remover o atributo ReadOnly.Set-ItemProperty -Path "c:\mediarefresh\wim\boot.wim" -Name IsReadOnly -Value $false
Agora podemos montar a imagem do WinPE armazenada no
boot.wim
no índice 2 usando o comando do PowerShell Mount-WindowsImageMount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
O conteúdo da imagem do WinPE armazenada no
boot.wim
no índice 2 agora pode ser exibido emc:\mediarefresh\mounted
.
Aplicar drivers de terceiros ao WinPE
Instale os drivers de terceiros coletados na pastac:\mediarefresh\drivers
no WinPE emc:\mediarefresh\mounted
usando o comando do 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 do driver, consulte a Visão geral de drivers de dispositivo e implantação.Add-WindowsDriver -Path "c:\mediarefresh\Mounted" -Driver "c:\mediarefresh\drivers" -Recurse
Aplicar atualizações de manutenção ao WinPE
Aplique a atualização cumulativa mais recente e suas dependências baixadas para a pastac:\mediarefresh\packages
ao WinPE emc:\mediarefresh\mounted
usando o comando do PowerShell Add-WindowsPackage. Esse processo pode levar vários minutos para ser concluído, no entanto, garante que sua imagem do Windows já tenha a atualização de manutenção mais recente aplicada.Primeiro, aplique a dependência de atualização da pilha de manutenção.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
Agora, aplique a atualização cumulativa mais recente.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
Dica
Se você encontrar o erro 0x800f0823, a atualização do serviço poderá ter uma dependência que deve ser aplicada primeiro. Se você já baixou sua dependência, tente executar o comando acima uma segunda vez. Se isso não resolver o problema, talvez seja necessário baixar um pré-requisito adicional para sua atualização.
- Anote o KB######## no nome do arquivo da atualização em c:\mediarefresh\packages.
- Pesquise support.microsoft.com com o KB#######
- Abra o primeiro tópico que corresponder e pesquise o termo "pré-requisito".
- Baixe os 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 depois que o erro for resolvido.
Copiar
Setup.exe
atualizado
Antes de continuar, copie osetup.exe
atualizado do WinPE emc:\mediarefresh\mounted\sources
parac:\mediarefresh\out\sources
usando o Robocopy.Primeiro, precisamos remover o atributo ReadOnly em
c:\mediarefresh\mounted\sources\setup.exe
usando o comando Set-ItemProperty do PowerShell.Set-ItemProperty -Path "c:\mediarefresh\out\sources\setup.exe" -Name IsReadOnly -Value $false
Agora podemos copiar
setup.exe
dec:\mediarefresh\mounted\sources
parac:\mediarefresh\out\sources
usando o Robocopy.robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe
Desmontar e salvar alterações no WinPE
Para concluir o processo de manutenção, use o comando Dismount-WindowsImage do PowerShell para salvar as alterações.
Importante
Antes de executar o comando
Dismount-WindowsImage
, verifique se você não tem nenhuma exibição do Explorador de Arquivos ou janelas de comando que estejam exibindo conteúdo emc:\mediarefresh\mounted
. Se não fizer isso, ocorrerá um erro ao tentar desmontar.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
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 Remove-Item do PowerShellRD c:\MediaRefresh\mounted
Publicar
Boot.wim
na pastaout
Agora copie o
boot.wim
atualizado dec:\mediarefresh\wim
parac:\mediarefresh\out\sources
usando o Robocopy.robocopy c:\mediarefresh\wim c:\mediarefresh\out\sources boot.wim
O WinPE (Ambiente de Pré-Instalação do Windows) armazenado como boot.wim
e setup.exe
ambos localizados em c:\mediarefresh\out\sources\
estão totalmente atualizados.
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 seção Preparar Ambiente de Manutenção de Mídia, movemos install.wim
para uma pasta de trabalho. Nesta seção, percorreremos o processo de atualização de install.wim
com a atualização de manutenção cumulativa mais recente e iremos incorporar drivers de terceiros, se necessário, pelo dispositivo de destino usando o Ambiente de Manutenção de Mídia. Depois que a atualização for concluída, divida install.wim
em arquivos *.swm
menores para que possam ser copiados para uma unidade flash formatada como FAT32.
Montar o sistema operacional install.wim
A primeira etapa na atualização do ambiente WinPE é criar uma pasta temporária chamada
mounted
emc:\mediarefresh
usando o comando New-Item do PowerShell.MD c:\MediaRefresh\mounted
Antes de atualizarmos o install.wim, precisamos garantir que seu atributo de arquivo não esteja definido como ReadOnly. Use o comando do PowerShell Set-ItemProperty para remover o atributo ReadOnly.
Set-ItemProperty -Path "c:\mediarefresh\wim\install.wim" -Name IsReadOnly -Value $false
Agora podemos montar a imagem do Windows IoT Enterprise armazenada em install.wim no índice 2 usando o comando do PowerShell Mount-WindowsImage
Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
O conteúdo do repositório de imagens do Windows IoT Enterprise em install.wim no índice 2 agora pode ser exibido em
c:\mediarefresh\mounted
.
Instalar drivers de terceiros
Instale drivers de terceiros coletados na pastac:\mediarefresh\drivers
para a imagem do sistema operacional emc:\mediarefresh\mounted
usando o comando do 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 do driver, consulte a Visão geral de drivers de dispositivo e implantação.Adicionar scripts de instalação personalizados
Antes de adicionar scripts de instalação personalizados à imagem do sistema operacional, primeiro crie uma pasta
scripts
emc:\mediarefresh\mounted\windows\setup\
usando o comando New-Item do PowerShell.MD c:\mediarefresh\mounted\windows\setup\scripts
Copie scripts de
c:\mediarefresh\scripts
parac:\mediarefresh\mounted\windows\setup\scripts
usando o Robocopy.robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
Aplicar pacotes de manutenção à imagem do sistema operacional
Aplique a atualização cumulativa mais recente e suas dependências baixadas para a pastac:\mediarefresh\packages
ao WinPE emc:\mediarefresh\mounted
usando o comando do PowerShell Add-WindowsPackage.Primeiro, aplique a dependência de atualização da pilha de manutenção.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
Agora, aplique a atualização cumulativa mais recente.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\LCU"
Dica
Se você encontrar o erro 0x800f0823, a atualização do serviço poderá ter uma dependência que deve ser aplicada primeiro. Se você já baixou sua dependência, tente executar o comando acima uma segunda vez. Se isso não resolver o problema, talvez seja necessário baixar um pré-requisito adicional para sua atualização.
- Anote o KB######## no nome do arquivo da atualização em c:\mediarefresh\packages.
- Pesquise support.microsoft.com com o KB#######
- Abra o primeiro tópico que corresponder e pesquise o termo "pré-requisito".
- Baixe os 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 depois que o erro for resolvido.
Salvar e desmontar o install.wim atualizado
Para concluir o processo de manutenção, use o comando Dismount-WindowsImage do PowerShell para salvar as alterações.Importante
Antes de executar o comando
Dismount-WindowsImage
, verifique se você não tem nenhuma exibição do Explorador de Arquivos ou janelas de comando que estejam exibindo conteúdo emc:\mediarefresh\mounted
. Se não fizer isso, ocorrerá um erro ao tentar desmontar.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
Excluir a pasta temporária
mounted
Após a desmontagem bem-sucedida do boot.wim, agora podemos remover a pasta temporáriac:\mediarefresh\mounted
usando o comando Remove-Item do PowerShellRD c:\mediarefresh\mounted
Dividir WIM para dar suporte ao sistema de arquivos FAT32
Para garantir que o novo install.wim se encaixe na mídia flash formatada como FAT32, que tem um tamanho máximo de arquivo de 4 GB, você divide o arquivo de imagem do Windows (install.wim) em um conjunto de arquivos menores (.swm) com um tamanho máximo de 4000 MB usando o comando do PowerShell Split-WindowsImage. Os arquivos*.swm
resultantes são gravados na pastac:\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 em c:\mediarefresh\out\sources\
como install.swm
e install2.swm
, que a instalação usa como se fossem o original install.wim
.
Copiar mídia atualizada para a unidade flash
Se você ainda não criou uma unidade flash inicializável, faça isso antes de continuar seguindo as etapas para Instalar o Windows de uma unidade flash.
A etapa final da criação da mídia de instalação atualizada é copiar o conteúdo de c:\mediarefresh\out
para sua unidade flash inicializável usando o Robocopy.
robocopy c:\mediarefresh\out <DriveLetter>:\ /e
Onde <DriveLetter>
é a letra da unidade associada à unidade flash
Instalar o Windows no novo dispositivo
Conecte a unidade flash ao dispositivo de destino.
Ative 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 na unidade flash.
A Instalação do Windows é iniciada. Siga as instruções para instalar o Windows
Dica
Talvez seja necessário consultar as instruções do fabricante do dispositivo para configurá-lo para inicialização da unidade flash se esse processo não funcionar em seu dispositivo.
Depois que a fase inicial da Instalação for concluída e o dispositivo for reiniciado, a Instalação poderá começar novamente desde o início. Se a Instalação for iniciada novamente, cancele a Instalação e desligue o computador, remova a unidade flash e ative 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, confira os artigos a seguir para obter diretrizes de solução de problemas.
Script Completo
Esta seção contém um script completo que executa automaticamente cada uma das etapas de manutenção de mídia em sucessão. Antes de usar este script, você deve concluir a seção Preparar ambiente de manutenção de mídia deste artigo. Quando estiver pronto, copie o script do PowerShell a seguir 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