Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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\WIMCopiar 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-VolumeOnde
<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\Outpasta usando Robocopy.robocopy <DriveLetter>:\ c:\MediaRefresh\Out /Copy:DT /eOnde
<DriveLetter>é a letra da unidade associada ao arquivo ISO montadoMova boot.wim e install.wim do
c:\MediaRefresh\Out\Sourcesparac:\MediaRefresh\WIMpasta, a pasta de trabalho para atualizar os arquivos WIM, usando Robocopy.robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /MovProssiga 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/driversou em subpastas dec:/MediaRefresh/drivers.[Opcional] Reunir scripts de configuração
Coloque os scripts personalizadosSetupcomplete.cmdeErrorHandler.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
mountedemc:\mediarefreshusando o comando PowerShell New-ItemMD c:\MediaRefresh\mountedAntes 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 $falseAgora podemos montar a imagem do WinPE armazenada no
boot.wimno í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.wimno índice 2 agora pode ser visualizado emc:\mediarefresh\mounted.
Aplicar drivers de terceiros ao WinPE
Instale drivers de terceiros coletados na pastac:\mediarefresh\driverspara o WinPE emc:\mediarefresh\mountedusando o comando PowerShell Add-WindowsDriver.Observação
Para fins de teste, você pode usar
-ForceUnsignedpara 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" -RecurseAplicar atualizações de manutenção ao WinPE
Aplique a atualização cumulativa mais recente e as suas dependências que descarregaste na pastac:\mediarefresh\packagespara o WinPE emc:\mediarefresh\mountedusando 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.exeesetuphost.exeatualizados Antes de continuar, copie ossetup.exeesetuphost.exeatualizados do WinPE emc:\mediarefresh\mounted\sourcesparac:\mediarefresh\out\sourcesusando Robocopy.Primeiro, precisamos remover o atributo ReadOnly no
c:\mediarefresh\mounted\sources\setup.exeec:\mediarefresh\mounted\sources\setuphost.exeusando 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 $falseAgora podemos copiar
setup.exeesetuphost.exedec:\mediarefresh\mounted\sourcesparac:\mediarefresh\out\sourcesusando 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" -saveExcluir pasta temporária
Após a desmontagem bem-sucedida do boot.wim, agora podemos remover a pasta temporária
c:\mediarefresh\mountedusando o comando PowerShell Remove-ItemRD c:\MediaRefresh\mountedPublicar
Boot.wimemoutpastaAgora copie o
boot.wimatualizado doc:\mediarefresh\wimpara oc:\mediarefresh\out\sourcesusando 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
mountedemc:\mediarefreshusando o comando PowerShell New-Item.MD c:\MediaRefresh\mountedAntes 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 $falseAgora 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\driversna imagem do sistema operativo emc:\mediarefresh\mountedusando o comando PowerShell Add-WindowsDriver. O parâmetro-recursepermite o processamento de subpastas.Add-WindowsDriver -Path "c:\mediarefresh\mounted" -Driver "c:\mediarefresh\drivers" -RecurseObservação
Para fins de teste, você pode usar
-ForceUnsignedpara 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
scriptsemc:\mediarefresh\mounted\windows\setup\usando o comando PowerShell New-Item .MD c:\mediarefresh\mounted\windows\setup\scriptsCopie scripts do
c:\mediarefresh\scriptspara oc:\mediarefresh\mounted\windows\setup\scriptsusando 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\packagespara o WinPE emc:\mediarefresh\mountedusando 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" -saveExcluir pasta temporária
mounted
Após a desmontagem bem-sucedida do boot.wim, agora podemos remover a pasta temporáriac:\mediarefresh\mountedusando o comando PowerShell Remove-ItemRD c:\mediarefresh\mountedDividir 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*.swmresultantes 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.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
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