Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
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
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.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, 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 ISOTome nota do DriveLetter, pois precisaremos usá-lo na próxima etapa.
Copie arquivos da mídia de instalação original indicada aqui por
<DriveLetter>
parac:\MediaRefresh\Out
pasta usando Robocopy.robocopy <DriveLetter>:\ c:\MediaRefresh\Out /Copy:DT /e
Onde
<DriveLetter>
é a letra da unidade associada ao arquivo ISO montadoMova boot.wim e install.wim do
c:\MediaRefresh\Out\Sources
parac:\MediaRefresh\WIM
pasta, a pasta de trabalho para atualizar os arquivos WIM, usando Robocopy.robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
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.
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 Arm64Windows 10 IoT Enterprise LTSC 2021 19044 Mostrar histórico de atualizações Mostrar atualizações x64
Mostrar atualizações do Arm64Windows 10 IoT Enterprise LTSC 2019 17763 Mostrar histórico de atualizações Mostrar atualizações x64
Mostrar atualizações do 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] Reunir drivers de terceiros
Coloque os drivers de terceiros necessários para o seu dispositivo num formato não compactado na raiz da pastac:/MediaRefresh/drivers
ou em subpastas dec:/MediaRefresh/drivers
.[Opcional] Reunir scripts de configuração
Coloque os scripts personalizadosSetupcomplete.cmd
eErrorHandler.cmd
, que são 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 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.
Monte WinPE boot.wim
A primeira etapa na atualização do ambiente WinPE é criar uma pasta temporária chamada
mounted
emc:\mediarefresh
usando o comando PowerShell New-ItemMD c:\MediaRefresh\mounted
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
Agora podemos montar a imagem do WinPE armazenada no
boot.wim
no índice 2 usando o comando 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 visualizado emc:\mediarefresh\mounted
.
Aplicar drivers de terceiros ao WinPE
Instale drivers de terceiros coletados na pastac:\mediarefresh\drivers
para o WinPE emc:\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
Aplicar atualizações de manutenção ao WinPE
Aplique a atualização cumulativa mais recente e as suas dependências que descarregaste na pastac:\mediarefresh\packages
para o WinPE emc:\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.Primeiro, aplique a dependência de atualização da pilha de serviços.
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 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.
Copiar
Setup.exe
esetuphost.exe
atualizados Antes de continuar, copie ossetup.exe
esetuphost.exe
atualizados do WinPE emc:\mediarefresh\mounted\sources
parac:\mediarefresh\out\sources
usando Robocopy.Primeiro, precisamos remover o atributo ReadOnly no
c:\mediarefresh\mounted\sources\setup.exe
ec:\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
Agora podemos copiar
setup.exe
esetuphost.exe
dec:\mediarefresh\mounted\sources
parac:\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
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 emc:\mediarefresh\mounted
. O não cumprimento disto resulta em 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 PowerShell Remove-ItemRD c:\MediaRefresh\mounted
Publicar
Boot.wim
emout
pastaAgora copie o
boot.wim
atualizado doc:\mediarefresh\wim
para oc:\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.
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 PowerShell New-Item.MD c:\MediaRefresh\mounted
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
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"
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
.
Instalar drivers de terceiros
Instale os drivers de terceiros recolhidos na pastac:\mediarefresh\drivers
na imagem do sistema operativo emc:\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.Adicionar scripts de instalação personalizados
Antes de adicionar scripts de configuração personalizados à imagem do sistema operacional, primeiro crie uma pasta
scripts
emc:\mediarefresh\mounted\windows\setup\
usando o comando PowerShell New-Item .MD c:\mediarefresh\mounted\windows\setup\scripts
Copie scripts do
c:\mediarefresh\scripts
para oc:\mediarefresh\mounted\windows\setup\scripts
usando Robocopy.robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
Aplicar pacotes de manutenção à imagem do SO
Aplique a atualização cumulativa mais recente e as suas dependências que descarregaste na pastac:\mediarefresh\packages
para o WinPE emc:\mediarefresh\mounted
usando o comando do PowerShell Add-WindowsPackage.Primeiro, aplique a dependência de atualização da pilha de serviços.
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 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.
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 emc:\mediarefresh\mounted
. O não cumprimento disto resulta em erro ao tentar desmontar.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
Excluir 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 PowerShell Remove-ItemRD c:\mediarefresh\mounted
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 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 sob c:\mediarefresh\out\sources\
como install.swm
e install2.swm
que a instalação usa como se fossem o install.wim
original.
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
Conecte a unidade flash ao dispositivo alvo.
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.
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.
- Solução de problemas de implantação de e arquivos de log
- Arquivos de Log de Instalação do Windows e Registos de Eventos
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