Sdílet prostřednictvím


Aktualizace instalačního média IoT Enterprise

V tomto článku nastavíte prostředí aktualizace médií a shromáždíte všechny požadavky potřebné k aktualizaci prostředí WinPE i hlavního operačního systému, nainstalujte ovladače.

Příprava prostředí servisování médií

  1. Spuštění PowerShellu s oprávněními správce.
    Tuto instanci PowerShellu používáme pro kompletní proces údržby instalačního média k instalaci aktualizací a v případě potřeby začleníme požadované ovladače, které nejsou součástí instalačního média systému Windows.

    • Vyberte Spustit
    • Zadejte PowerShell.
    • Klikněte pravým tlačítkem myši na Windows PowerShell
    • Vyberte Spustit jako správce
  2. Vytvoření složek pro ukládání souborů během údržby médií
    Pomocí příkazu PowerShellu New_Item vytvořte na počítači technika následující složky pro ukládání souborů potřebných během údržby médií.

    c:\MediaRefresh: Nadřazená složka pro ukládání souborů během údržby médií.
    c:\MediaRefresh\Out: Kopie původního média aktualizována během údržby.
    c:\MediaRefresh\Packages\LCU: Nejnovější kumulativní aktualizace c:\MediaRefresh\Packages\SSU: Aktualizace zásobníku údržby v případě potřeby
    c:\MediaRefresh\Drivers: Ovladače třetích stran.
    c:\MediaRefresh\Scripts: Vlastní instalační skripty. c:\MediaRefresh\WIM: Pracovní adresář pro aktualizaci boot.wim a 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. Kopírování souborů z původních médií
    Zkopírujte všechny soubory z původního instalačního média do c:\MediaRefresh\Out.

    1. Pokračujte krokem b., pokud máte fyzické médium, jinak musíte nejprve připojit iso instalace Windows IoT Enterprise pomocí Mount-DiskImage a zobrazit výsledné připojené písmeno jednotky pomocí Get-Volume.

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

      Kde <ISO Path> je úplná cesta k vašemu ISO

      Poznamenejte si DriveLetter, protože ho budeme muset použít v dalším kroku.

    2. Zkopírujte soubory z původního instalačního média označeného zde <DriveLetter> do c:\MediaRefresh\Out složky pomocí Robocopy.

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

      Kde <DriveLetter> je písmeno jednotky přidružené k připojenému souboru ISO

    3. Přesuňte boot.wim a install.wim z c:\MediaRefresh\Out\Sources do složky c:\MediaRefresh\WIM, pracovní složku pro aktualizaci souborů WIM pomocí Robocopy.

      robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
      
    4. Pokud jste pro předchozí příkaz nepřipojili ISO, přejděte k dalšímu kroku, jinak musíte nejprve odpojit instalační ISO Windows IoT Enterprise pomocí Dismount-Diskimage

      Dismount-DiskImage -ImagePath <ISO Path>  
      

      Kde <ISO Path> je plně kvalifikovaná cesta k vašemu souboru ISO.

  4. Shromáždění servisních balíčků

    Stáhněte si nejnovější kumulativní soubor služby Microsoft Servicing Update (MSU) do složky c:\MediaRefresh\Packages\LCU.

    Pokud je vyžadována závislost aktualizace zásobníku údržby (MSU), stáhněte ji do c:\MediaRefresh\Packages\SSU složky. Následující tabulka vám pomůže najít aktualizace pro vaši konkrétní verzi Windows IoT Enterprise.

    Uvolnit Verze Historie aktualizací Aktualizovat katalog
    Windows 11 IoT Enterprise LTSC 2024 [24H2] 26100 Zobrazit historii aktualizací Zobrazit aktualizace x64
    Zobrazit aktualizace Arm64
    Windows 10 IoT Enterprise LTSC 2021 19044 Zobrazit historii aktualizací Zobrazit aktualizace x64
    Zobrazit aktualizace Arm64
    Windows 10 IoT Enterprise LTSC 2019 17763 Zobrazit historii aktualizací Zobrazit aktualizace x64
    Zobrazit aktualizace Arm64
    Windows 10 IoT Enterprise LTSC 2016 14393 Zobrazit historii aktualizací Zobrazit aktualizace x64
    Zobrazit aktualizace x86
    Windows 10 IoT Enterprise LTSC 2015 10240 Zobrazit historii aktualizací Zobrazit aktualizace x64
    Zobrazit aktualizace x86
  5. [Volitelné] Shromážděte ovladače třetích stran
    Umístěte ovladače třetích stran vyžadované pro vaše zařízení v nekomprimované podobě do kořenové složky c:/MediaRefresh/drivers nebo jako podsložky pro c:/MediaRefresh/drivers.

  6. [Volitelné] Shromáždění konfiguračních skriptů
    Umístěte Setupcomplete.cmd a ErrorHandler.cmd vlastní skripty, které běží během procesu instalace systému Windows nebo po jeho spuštění do složky c:\MediaRefresh\Scripts.

    Další informace najdete v tématu Přidání vlastního skriptu do instalačního programu systému Windows

Aktualizace předinstalačního prostředí Windows (WinPE)

Prostředí Windows Preinstallation Environment (WinPE) je obsaženo v boot.wim na původním instalačním médiu ve složce \sources. V této části si projdeme proces aktualizace boot.wim s nejnovější kumulativní servisní aktualizací a v případě potřeby začleníme ovladače třetích stran do prostředí WinPE pomocí prostředí Media Servicing Environment.

  1. Připojit winPE boot.wim

    1. Prvním krokem při aktualizaci prostředí WinPE je vytvoření dočasné složky s názvem mounted pod c:\mediarefresh pomocí příkazu PowerShellu new-item

      MD c:\MediaRefresh\mounted
      
    2. Než budeme moct aktualizovat boot.wim, musíme se ujistit, že jeho atribut souboru není nastavený na ReadOnly. Pomocí příkazu PowerShellu Set-ItemProperty odeberte atribut ReadOnly.

      Set-ItemProperty -Path "c:\mediarefresh\wim\boot.wim" -Name IsReadOnly -Value $false
      
    3. Teď můžeme připojit image WinPE uloženou v boot.wim na indexu 2 pomocí příkazu PowerShellu Mount-WindowsImage

      Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
      
    4. Obsah image WinPE uloženého v boot.wim na indexu 2 je nyní možné zobrazit na c:\mediarefresh\mounted.

  2. použití ovladačů třetích stran na WinPE
    Pomocí příkazu PowerShell Add-WindowsDrivernainstalujte do WinPE na c:\mediarefresh\mounted ovladače třetích stran, které jste shromáždili ve složce c:\mediarefresh\drivers.

    Poznámka

    Pro účely testování můžete pomocí -ForceUnsigned přidat nepodepsané ovladače a přepsat požadavek, aby ovladače měly digitální podpis. Další informace o požadavcích na podepisování ovladačů najdete v tématu Přehled ovladačů zařízení a nasazení.

    Add-WindowsDriver -Path "c:\mediarefresh\Mounted" -Driver "c:\mediarefresh\drivers" -Recurse
    
  3. Použití servisních aktualizací pro WinPE
    Použijte nejnovější kumulativní aktualizaci a její závislosti, které jste stáhli do složky c:\mediarefresh\packages do prostředí WinPE v c:\mediarefresh\mounted pomocí příkazu PowerShellu Add-WindowsPackage. Dokončení tohoto procesu bude trvat několik minut, ale zajistí, že vaše image Windows už obsahuje nejnovější aktualizaci údržby.

    1. Nejprve použijte závislost aktualizace zásobníku údržby.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
      
    2. Nyní použijte nejnovější kumulativní aktualizaci.

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

    Spropitné

    Pokud dojde k chybě 0x800f0823, může mít vaše servisní aktualizace závislost, která se musí použít jako první. Pokud jste si už stáhli její závislost, zkuste spustit předchozí Add-WindowsPackage podruhé. Pokud se tím problém nevyřeší, možná budete muset stáhnout další požadavek na aktualizaci.

    • Poznamenejte si kb####### v názvu souboru aktualizace v c:\mediarefresh\packages.
    • Vyhledejte na support.microsoft.com pomocí KB#######
    • Otevřete první téma, které odpovídá výrazu "předpoklad", a vyhledejte ho.
    • Stáhněte všechny uvedené požadavky a spusťte předchozí příkaz Add-WindowsPackage znovu. Mějte na paměti, že možná budete muset příkaz spustit dvakrát, aby se nejprve aplikovaly požadované předpoklady.
    • Po vyřešení chyby pokračujte dalším krokem.
  4. Zkopírujte aktualizované Setup.exe a setuphost.exe Než budete pokračovat, zkopírujte aktualizované setup.exe a setuphost.exe z WinPE na c:\mediarefresh\mounted\sources do c:\mediarefresh\out\sources pomocí Robocopy.

    1. Nejprve musíme odebrat atribut ReadOnly pro c:\mediarefresh\mounted\sources\setup.exe a c:\mediarefresh\mounted\sources\setuphost.exe pomocí příkazu 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. Teď můžeme zkopírovat setup.exe a setuphost.exe z c:\mediarefresh\mounted\sources do c:\mediarefresh\out\sources pomocí Robocopy.

      robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe
      robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setuphost.exe
      
  5. Odpojte a uložte změny do WinPE

    Pokud chcete dokončit proces údržby, uložte změny pomocí příkazu PowerShellu Dismount-WindowsImage.

    Důležitý

    Před spuštěním příkazu Dismount-WindowsImage se ujistěte, že nemáte žádná zobrazení Průzkumníka souborů ani okna příkazů, která zobrazují obsah v c:\mediarefresh\mounted. Pokud tak neučiníte, dojde při pokusu o odpojení k chybě.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. Odstranění dočasné složky

    Po úspěšném odpojení souboru boot.wim teď můžeme odebrat dočasnou složku c:\mediarefresh\mounted pomocí příkazu PowerShellu Remove-Item

    RD c:\MediaRefresh\mounted
    
  7. Publikovat Boot.wim do složky out

    Teď zkopírujte aktualizované boot.wim z c:\mediarefresh\wim do c:\mediarefresh\out\sources pomocí Robocopy.

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

Prostředí Windows Preinstall Environment (WinPE) uložené na boot.wim a setup.exe, obojí umístěné pod c:\mediarefresh\out\sources\, je plně aktualizováno.

Aktualizace Windows IoT Enterprise

Obraz Windows IoT Enterprise je obsažen v install.wim na původním instalačním médiu ve složce \sources. V části Příprava prostředí údržby médií jsme přesunuli install.wim do pracovní složky. V této části si projdeme proces aktualizace systému install.wim pomocí nejnovější kumulativní servisní aktualizace a případně začleníme ovladače třetích stran pro cílové zařízení s využitím prostředí pro servis médií . Po dokončení aktualizace rozdělte install.wim do menších *.swm souborů, aby je bylo možné zkopírovat na flash disk formátovaný jako FAT32.

  1. Připojte install.wim operačního systému

    1. Prvním krokem při aktualizaci prostředí WinPE je vytvoření dočasné složky s názvem mounted v c:\mediarefresh pomocí příkazu PowerShellu New-Item.

      MD c:\MediaRefresh\mounted
      
    2. Než budeme moct aktualizovat soubor install.wim, musíme se ujistit, že jeho atribut souboru není nastavený na ReadOnly. Pomocí příkazu PowerShellu Set-ItemProperty odeberte atribut ReadOnly.

      Set-ItemProperty -Path "c:\mediarefresh\wim\install.wim" -Name IsReadOnly -Value $false
      
    3. Teď můžeme připojit image Windows IoT Enterprise uloženou v souboru install.wim v indexu 2 pomocí příkazu PowerShellu Mount-WindowsImage

      Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
      
    4. Obsah úložiště obrazů Windows IoT Enterprise v souboru install.wim na indexu 2 lze nyní zobrazit na c:\mediarefresh\mounted.

  2. Instalace ovladačů třetích stran
    Nainstalujte ovladače třetích stran, které jste shromáždili ve složce c:\mediarefresh\drivers, do image operačního systému na c:\mediarefresh\mounted pomocí příkazu PowerShellu Add-WindowsDriver. Parametr -recurse umožňuje zpracování podsložek.

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

    Poznámka

    Pro účely testování můžete pomocí -ForceUnsigned přidat nepodepsané ovladače a přepsat požadavek, aby ovladače měly digitální podpis. Další informace o požadavcích na podepisování ovladačů najdete v tématu Přehled ovladačů zařízení a nasazení.

  3. přidání vlastních skriptů instalace

    1. Před přidáním vlastních instalačních skriptů do image operačního systému nejprve vytvořte složku scripts pod c:\mediarefresh\mounted\windows\setup\ pomocí příkazu PowerShellu New-Item .

      MD c:\mediarefresh\mounted\windows\setup\scripts
      
    2. Kopírování skriptů z c:\mediarefresh\scripts do c:\mediarefresh\mounted\windows\setup\scripts pomocí nástroje Robocopy.

      robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
      
  4. Použití servisních balíčků na image operačního systému
    Použijte nejnovější kumulativní aktualizaci a její závislosti, které jste stáhli do složky c:\mediarefresh\packages do prostředí WinPE v c:\mediarefresh\mounted pomocí příkazu PowerShellu Add-WindowsPackage.

    1. Nejprve použijte závislost aktualizace zásobníku údržby.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
      
    2. Nyní použijte nejnovější kumulativní aktualizaci.

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

    Spropitné

    Pokud dojde k chybě 0x800f0823, může mít vaše servisní aktualizace závislost, která se musí použít jako první. Pokud jste si už stáhli její závislost, zkuste znovu spustit předchozí příkaz Add-WindowsPackage. Pokud se tím problém nevyřeší, možná budete muset stáhnout další požadavek na aktualizaci.

    • Poznamenejte si kb####### v názvu souboru aktualizace v c:\mediarefresh\packages.
    • Vyhledat support.microsoft.com pomocí KB#######
    • Otevřete první téma, které odpovídá výrazu "předpoklad", a vyhledejte ho.
    • Stáhněte všechny uvedené požadavky a spusťte výše uvedený příkaz znovu. Mějte na paměti, že možná budete muset příkaz spustit dvakrát, aby se nejprve uplatnil předpoklad.
    • Po vyřešení chyby pokračujte dalším krokem.
  5. Uložení a odpojení aktualizované instalace.wim
    Pokud chcete dokončit proces údržby, uložte změny pomocí příkazu PowerShellu Dismount-WindowsImage.

    Důležitý

    Před spuštěním příkazu Dismount-WindowsImage se ujistěte, že nemáte žádná zobrazení Průzkumníka souborů ani okna příkazů, která zobrazují obsah v c:\mediarefresh\mounted. Pokud to neuděláte, při pokusu o odpojení dojde k chybě.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. Odstranění dočasné složky mounted
    Po úspěšném odpojení souboru boot.wim teď můžeme odebrat dočasnou složku c:\mediarefresh\mounted pomocí příkazu PowerShellu Remove-Item

    RD c:\mediarefresh\mounted
    
  7. Rozdělit WIM pro podporu systému souborů FAT32
    Aby se zajistilo, že se nový soubor install.wim vejde na flash médium formátovaný jako FAT32, který má maximální velikost souboru 4 GB, rozdělíte soubor Image Systému Windows (install.wim) do sady menších souborů (.swm) s maximální velikostí 4 000 MB pomocí příkazu PowerShellu Split-WindowsImage. Výsledné *.swm soubory se zapisují do složky c:\mediarefresh\out\sources.

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

Instalační obraz operačního systému, původně uložený jako install.wim, je nyní uložen pod c:\mediarefresh\out\sources\ jako install.swm a install2.swm, které instalační program používá, jako by to byly původní install.wim.

Kopírování aktualizovaných médií na flash disk

Pokud jste nevytvořili spouštěcí flash disk, udělejte to předtím, než budete pokračovat podle kroků k Instalace Windows z flash disku.

Posledním krokem vytvoření aktualizovaného instalačního média je zkopírování obsahu c:\mediarefresh\out na spouštěcí flash disk pomocí Robocopy.

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

Kde <DriveLetter> je písmeno disku přidružené k vašemu USB flash disku

Instalace Windows na nové zařízení

  1. Připojte flash disk k cílovému zařízení.

  2. Zapněte zařízení a stiskněte klávesu, která otevře nabídku výběru spouštěcího zařízení pro počítač, například klávesy Esc/F10/F12. Vyberte možnost, která zařízení spustí z flash disku.

    Spustí se instalační program systému Windows. Postupujte podle pokynů k instalaci Windows.

    Spropitné

    Pokud tento proces na vašem zařízení nefunguje, může být nutné prostudovat si pokyny výrobce zařízení, abyste jej mohli nastavit pro spuštění z flash disku.

  3. Po dokončení počáteční fáze instalace a restartování zařízení se instalační program může spustit znovu od začátku. Pokud se instalační program znovu spustí, zrušte instalaci a vypněte počítač, odeberte flash disk a zapněte zařízení a pokračujte další fází instalace.

    Spropitné

    Pokud z nějakého důvodu během procesu instalace dojde k chybě, přečtěte si následující články s pokyny k řešení potíží.

Úplný skript

Tato část obsahuje úplný skript, který automaticky provádí jednotlivé kroky údržby médií. Před použitím tohoto skriptu musíte dokončit sekci Příprava prostředí pro servis médií tohoto článku. Jakmile budete připraveni, zkopírujte následující skript PowerShellu do 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

Další zdroje informací