Udostępnij za pośrednictwem


Odśwież nośnik instalacyjny IoT Enterprise

W tym artykule skonfigurujesz środowisko odświeżania multimediów i zbierzesz wszystkie wymagania wstępne wymagane do zaktualizowania zarówno środowiska WinPE, jak i głównego systemu operacyjnego, zainstaluj sterowniki

Przygotowywanie środowiska obsługi multimediów

  1. uruchom program PowerShell z uprawnieniami administratora.
    Używamy tego wystąpienia programu PowerShell, aby zakończyć proces obsługi nośnika instalacyjnego w celu zastosowania aktualizacji i, w razie potrzeby, dołączania wymaganych sterowników, które nie są częścią nośnika instalacyjnego systemu Windows

    • Wybierz pozycję Rozpocznij
    • Typ programu PowerShell
    • Kliknij prawym przyciskiem myszy Windows PowerShell
    • Wybierz pozycję Uruchom jako administrator
  2. Tworzenie folderów do przechowywania plików podczas obsługi multimediów
    Użyj polecenia programu PowerShell New_Item, aby utworzyć następujące foldery na komputerze techników do przechowywania plików potrzebnych podczas serwisowania multimediów.

    c:\MediaRefresh: folder nadrzędny do przechowywania plików podczas obsługi multimediów.
    c:\MediaRefresh\Out: Kopia oryginalnego nośnika zaktualizowanego podczas obsługi.
    c:\MediaRefresh\Packages\LCU: Najnowsza aktualizacja zbiorcza c:\MediaRefresh\Packages\SSU: Aktualizacja stosu obsługi w razie potrzeby
    c:\MediaRefresh\Drivers: sterowniki innych firm.
    c:\MediaRefresh\Scripts: skrypty instalacji niestandardowej. c:\MediaRefresh\WIM: katalog roboczy do aktualizowania boot.wim i 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. Skopiuj pliki z oryginalnego nośnika
    Skopiuj wszystkie pliki z oryginalnego nośnika instalacyjnego do c:\MediaRefresh\Out.

    1. Przejdź do kroku b., jeśli masz nośnik fizyczny, w przeciwnym razie musisz najpierw zainstalować iso instalacji systemu Windows IoT Enterprise przy użyciu Mount-DiskImage i wyświetlić wynikową literę zainstalowanego dysku przy użyciu Get-Volume.

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

      Gdzie <ISO Path> jest pełną kwalifikowaną ścieżką do ISO

      Zanotuj element DriveLetter, ponieważ będziemy musieli go użyć w następnym kroku.

    2. Skopiuj pliki z oryginalnego nośnika instalacyjnego oznaczonego tutaj przez <DriveLetter> do folderu c:\MediaRefresh\Out przy użyciu narzędzia Robocopy.

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

      Gdzie <DriveLetter> to litera dysku skojarzona z zainstalowanym plikiem ISO

    3. Przenieś plik boot.wim i install.wim z c:\MediaRefresh\Out\Sources do folderu c:\MediaRefresh\WIM, folderu roboczego służącego do aktualizowania plików WIM przy użyciu narzędzia Robocopy.

      robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
      
    4. Przejdź do następnego kroku, jeśli nie zamontowałeś obrazu ISO dla poprzedniego polecenia, w przeciwnym razie musisz najpierw odmontować obraz ISO instalacji systemu Windows IoT Enterprise przy użyciu Dismount-Diskimage

      Dismount-DiskImage -ImagePath <ISO Path>  
      

      Gdzie <ISO Path> jest w pełni kwalifikowaną ścieżką do pliku ISO.

  4. Zbieraj pakiety serwisowe

    Pobierz najnowszy zbiorczy plik microsoft servicing Update (MSU) do folderu c:\MediaRefresh\Packages\LCU.

    Jeśli aktualizacja stosu obsługi (MSU) jest wymagana jako zależność, pobierz ją do folderu c:\MediaRefresh\Packages\SSU. Skorzystaj z poniższej tabeli, aby ułatwić znajdowanie aktualizacji dla określonej wersji systemu Windows IoT Enterprise.

    Wydanie Wersja Historia aktualizacji Aktualizowanie wykazu
    Windows 11 IoT Enterprise LTSC 2024 [24H2] 26100 Pokaż historię aktualizacji Pokaż aktualizacje x64
    Pokaż aktualizacje arm64
    Windows 10 IoT Enterprise LTSC 2021 19044 Pokaż historię aktualizacji Pokaż aktualizacje x64
    Pokaż aktualizacje arm64
    Windows 10 IoT Enterprise LTSC 2019 17763 Pokaż historię aktualizacji Pokaż aktualizacje x64
    Pokaż aktualizacje arm64
    Windows 10 IoT Enterprise LTSC 2016 14393 Pokaż historię aktualizacji Pokaż aktualizacje x64
    Pokaż aktualizacje x86
    Windows 10 IoT Enterprise LTSC 2015 10240 Pokaż historię aktualizacji Pokaż aktualizacje x64
    Pokaż aktualizacje x86
  5. [Opcjonalnie] Zbierz zewnętrzne sterowniki
    Umieść sterowniki innych firm wymagane przez urządzenie w formacie nieskompresowanym w folderze głównym c:/MediaRefresh/drivers lub jako podfoldery do c:/MediaRefresh/drivers.

  6. [Opcjonalnie] Zbieranie skryptów konfiguracji
    Umieść skrypty niestandardowe Setupcomplete.cmd i ErrorHandler.cmd uruchamiane podczas lub po zakończeniu procesu Instalacji systemu Windows w folderze c:\MediaRefresh\Scripts.

    Aby uzyskać więcej informacji, zobacz Dodawanie niestandardowego skryptu do instalatora systemu Windows

Aktualizowanie środowiska preinstalacji systemu Windows (WinPE)

Środowisko preinstalacji systemu Windows (WinPE) znajduje się w boot.wim na oryginalnym nośniku instalacyjnym w folderze \sources. W tej sekcji omówimy proces aktualizacji boot.wim z wykorzystaniem najnowszej zbiorczej aktualizacji serwisowej oraz integrację sterowników innych firm, jeśli to konieczne, do środowiska WinPE przy wykorzystaniu środowiska obsługi multimediów .

  1. Zamontuj WinPE boot.wim

    1. Pierwszym krokiem aktualizowania środowiska WinPE jest utworzenie folderu tymczasowego o nazwie mounted w c:\mediarefresh przy użyciu polecenia programu PowerShell new-item

      MD c:\MediaRefresh\mounted
      
    2. Aby można było zaktualizować boot.wim, musimy upewnić się, że jego atrybut pliku nie jest ustawiony na ReadOnly. Użyj polecenia programu PowerShell Set-ItemProperty, aby usunąć atrybut ReadOnly.

      Set-ItemProperty -Path "c:\mediarefresh\wim\boot.wim" -Name IsReadOnly -Value $false
      
    3. Teraz możemy zainstalować obraz WinPE przechowywany w boot.wim w indeksie 2 przy użyciu polecenia programu PowerShell Mount-WindowsImage

      Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
      
    4. Zawartość obrazu WinPE przechowywanego w boot.wim w indeksie 2 jest teraz widoczna w c:\mediarefresh\mounted.

  2. Zastosuj sterowniki innych firm do WinPE
    Zainstaluj sterowniki innych firm zebrane w folderze c:\mediarefresh\drivers do WinPE w c:\mediarefresh\mounted za pomocą polecenia PowerShell Add-WindowsDriver.

    Uwaga

    W celach testowych można użyć -ForceUnsigned, aby dodać niepodpisane sterowniki i zastąpić wymaganie, aby sterowniki miały podpis cyfrowy. Więcej informacji na temat wymagań dotyczących podpisywania sterowników można znaleźć w sekcji Sterowniki urządzeń i Omówienie wdrażania.

    Add-WindowsDriver -Path "c:\mediarefresh\Mounted" -Driver "c:\mediarefresh\drivers" -Recurse
    
  3. Stosowanie aktualizacji obsługi do usługi WinPE
    Zastosuj najnowszą aktualizację zbiorczą i jej zależności, które pobrałeś do folderu c:\mediarefresh\packages, do środowiska WinPE znajdującego się w c:\mediarefresh\mounted, korzystając z polecenia PowerShell Add-WindowsPackage. Ten proces potrwa kilka minut, jednak zapewnia, że na obrazie systemu Windows jest już zastosowana najnowsza aktualizacja serwisowa.

    1. Najpierw zastosuj zależność aktualizacji stosu obsługi.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
      
    2. Teraz zastosuj najnowszą aktualizację zbiorczą.

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

    Napiwek

    Jeśli wystąpi błąd 0x800f0823, aktualizacja obsługi może mieć zależność, która musi zostać zastosowana jako pierwsza. Jeśli już pobrałeś jego zależność, spróbuj uruchomić poprzednią operację Add-WindowsPackage po raz drugi. Jeśli to nie rozwiąże problemu, może być konieczne pobranie innego wymagania wstępnego dotyczącego aktualizacji.

    • Zanotuj numer KB####### w nazwie pliku aktualizacji w folderze c:\mediarefresh\packages.
    • Wyszukaj support.microsoft.com z użyciem KB#######
    • Otwórz pierwszy temat, który pasuje, i poszukaj w nim terminu "wymaganie wstępne".
    • Pobierz wszystkie wymienione wymagania wstępne i ponownie uruchom poprzednie polecenie Add-WindowsPackage. Pamiętaj, że może być konieczne dwukrotne uruchomienie polecenia, aby umożliwić pierwsze zastosowanie wymagań wstępnych.
    • Po rozwiązaniu błędu przejdź do następnego kroku.
  4. Skopiuj zaktualizowane Setup.exe i setuphost.exe. Przed kontynuowaniem, skopiuj zaktualizowane setup.exe i setuphost.exe z WinPE w c:\mediarefresh\mounted\sources do c:\mediarefresh\out\sources, używając narzędzia Robocopy.

    1. Najpierw musimy usunąć atrybut ReadOnly w c:\mediarefresh\mounted\sources\setup.exe i c:\mediarefresh\mounted\sources\setuphost.exe za pomocą polecenia programu 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. Teraz możemy skopiować setup.exe i setuphost.exe z c:\mediarefresh\mounted\sources do c:\mediarefresh\out\sources przy użyciu narzędzia Robocopy.

      robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setup.exe
      robocopy c:\mediarefresh\mounted\sources c:\mediarefresh\out\sources setuphost.exe
      
  5. Odmontowanie i zapisywanie zmian w WinPE

    Aby ukończyć proces obsługi, użyj polecenia programu PowerShell Dismount-WindowsImage, aby zapisać zmiany.

    Ważny

    Przed wykonaniem polecenia Dismount-WindowsImage upewnij się, że nie masz żadnych widoków Eksploratora plików ani okien poleceń, które wyświetlają zawartość w c:\mediarefresh\mounted. Niewykonanie tej czynności skutkuje błędem podczas próby odmontowania.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. Usuń folder tymczasowy

    Po pomyślnym odmontowaniu pliku boot.wim możemy teraz usunąć folder tymczasowy c:\mediarefresh\mounted za pomocą polecenia programu PowerShell Remove-Item

    RD c:\MediaRefresh\mounted
    
  7. Opublikuj Boot.wim w folderze out

    Teraz skopiuj zaktualizowaną boot.wim z c:\mediarefresh\wim do c:\mediarefresh\out\sources przy użyciu programu Robocopy.

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

Środowisko preinstalacji systemu Windows (WinPE), przechowywane jako boot.wim i setup.exe, które znajdują się pod c:\mediarefresh\out\sources\, są w pełni zaktualizowane.

Aktualizowanie systemu Windows IoT Enterprise

Obraz systemu Windows IoT Enterprise znajduje się w install.wim na oryginalnym nośniku instalacyjnym w folderze \sources. W sekcji Przygotowywanie środowiska obsługi multimediów przenieśliśmy install.wim do folderu roboczego. W tej sekcji przeprowadzamy proces aktualizowania install.wim przy użyciu najnowszej zbiorczej aktualizacji serwisowej i integracji sterowników firm trzecich w razie potrzeby przez urządzenie docelowe, przy użyciu Środowiska Obsługi Multimediów . Po zakończeniu aktualizacji podziel install.wim na mniejsze pliki *.swm, aby można je było skopiować na dysk flash sformatowany jako FAT32.

  1. instalowanie systemu operacyjnego install.wim

    1. Pierwszym krokiem aktualizowania środowiska WinPE jest utworzenie folderu tymczasowego o nazwie mounted w c:\mediarefresh za pomocą polecenia programu PowerShell new-item.

      MD c:\MediaRefresh\mounted
      
    2. Aby można było zaktualizować plik install.wim, musimy upewnić się, że jego atrybut pliku nie jest ustawiony na ReadOnly. Użyj polecenia programu PowerShell Set-ItemProperty, aby usunąć atrybut ReadOnly.

      Set-ItemProperty -Path "c:\mediarefresh\wim\install.wim" -Name IsReadOnly -Value $false
      
    3. Teraz możemy zamontować obraz Windows IoT Enterprise przechowywany w pliku install.wim w indeksie 2 przy użyciu polecenia programu PowerShell Mount-WindowsImage

      Mount-WindowsImage -ImagePath "c:\mediarefresh\wim\install.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
      
    4. Zawartość magazynu obrazów systemu Windows IoT Enterprise w pliku install.wim pod indeksem 2 jest teraz widoczna w c:\mediarefresh\mounted.

  2. Instalowanie sterowników innych firm
    Zainstaluj sterowniki innych firm zebrane w folderze c:\mediarefresh\drivers do obrazu systemu operacyjnego w c:\mediarefresh\mounted przy użyciu polecenia programu PowerShell Add-WindowsDriver. Parametr -recurse umożliwia przetwarzanie podfolderów.

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

    Uwaga

    W celach testowych można użyć -ForceUnsigned, aby dodać niepodpisane sterowniki i zastąpić wymaganie, aby sterowniki miały podpis cyfrowy. Więcej informacji na temat wymagań dotyczących podpisywania sterowników można znaleźć w sekcji Sterowniki urządzeń i Omówienie wdrażania.

  3. Dodaj skrypty konfiguracyjne niestandardowe

    1. Przed dodaniem skryptów konfiguracji niestandardowych do obrazu systemu operacyjnego, najpierw utwórz folder scripts w c:\mediarefresh\mounted\windows\setup\ za pomocą polecenia programu PowerShell New-Item.

      MD c:\mediarefresh\mounted\windows\setup\scripts
      
    2. Skopiuj skrypty z c:\mediarefresh\scripts do c:\mediarefresh\mounted\windows\setup\scripts przy użyciu narzędzia Robocopy.

      robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
      
  4. Stosowanie pakietów obsługi do obrazu systemu operacyjnego
    Zastosuj najnowszą aktualizację zbiorczą i jej zależności, które pobrałeś do folderu c:\mediarefresh\packages, do środowiska WinPE znajdującego się w c:\mediarefresh\mounted, korzystając z polecenia PowerShell Add-WindowsPackage.

    1. Najpierw zastosuj zależność aktualizacji stosu obsługi.

      Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
      
    2. Teraz zastosuj najnowszą aktualizację zbiorczą.

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

    Napiwek

    Jeśli wystąpi błąd 0x800f0823, aktualizacja obsługi może mieć zależność, która musi zostać zastosowana jako pierwsza. Jeśli zależność została już pobrana, spróbuj uruchomić poprzednie polecenie Add-WindowsPackage ponownie. Jeśli to nie rozwiąże problemu, może być konieczne pobranie innego wymagania wstępnego dotyczącego aktualizacji.

    • Zanotuj numer KB####### w nazwie pliku aktualizacji w folderze c:\mediarefresh\packages.
    • Wyszukaj support.microsoft.com z użyciem KB#######
    • Otwórz pierwszy temat, który pasuje, i poszukaj w nim terminu "wymaganie wstępne".
    • Pobierz wszystkie wymienione wymagania wstępne i ponownie uruchom powyższe polecenie. Pamiętaj, że może być konieczne dwukrotne uruchomienie polecenia, aby umożliwić pierwsze zastosowanie wymagań wstępnych.
    • Po rozwiązaniu błędu przejdź do następnego kroku.
  5. Zapisz i odmontuj zaktualizowany install.wim
    Aby ukończyć proces obsługi, użyj polecenia programu PowerShell Dismount-WindowsImage w celu zapisania zmian.

    Ważny

    Przed wykonaniem polecenia Dismount-WindowsImage upewnij się, że nie masz żadnych widoków Eksploratora plików ani okien poleceń, które wyświetlają zawartość w c:\mediarefresh\mounted. Niewykonanie tej czynności skutkuje błędem podczas próby odmontowania.

    Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
    
  6. Usuń folder tymczasowy mounted
    Po pomyślnym odmontowaniu pliku boot.wim możemy teraz usunąć folder tymczasowy c:\mediarefresh\mounted za pomocą polecenia programu PowerShell Remove-Item

    RD c:\mediarefresh\mounted
    
  7. Split WIM do obsługi systemu plików FAT32
    Aby upewnić się, że nowy plik install.wim pasuje do nośnika flash sformatowanego jako FAT32, który ma maksymalny rozmiar pliku o rozmiarze 4 GB, należy podzielić plik obrazu systemu Windows (install.wim) na zestaw mniejszych plików (swm) o maksymalnym rozmiarze 4000 MB przy użyciu polecenia programu PowerShell Split-WindowsImage. Wynikowe pliki *.swm są zapisywane w folderze c:\mediarefresh\out\sources.

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

Obraz instalacyjny systemu operacyjnego, pierwotnie przechowywany jako install.wim, jest teraz przechowywany w c:\mediarefresh\out\sources\ jako install.swm i install2.swm, które instalator używa, tak jakby były oryginalnym install.wim.

Skopiuj zaktualizowane pliki na dysk flash

Jeśli nie utworzono rozruchowego dysku flash, przed kontynuowaniem wykonaj następujące kroki, aby Zainstalować system Windows z dysku flash.

Ostatnim krokiem tworzenia zaktualizowanego nośnika instalacyjnego jest skopiowanie zawartości c:\mediarefresh\out na rozruchowy dysk flash przy użyciu narzędzia Robocopy.

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

Gdzie <DriveLetter> to litera dysku skojarzona z dyskiem flash

Instalowanie systemu Windows na nowym urządzeniu

  1. Podłącz dysk flash do urządzenia docelowego.

  2. Włącz urządzenie i naciśnij klawisz, który otwiera menu wyboru urządzenia rozruchowego dla komputera, taki jak klawisze Esc/F10/F12. Wybierz opcję, która uruchamia urządzenie z dysku flash.

    Zostanie uruchomiona instalacja systemu Windows. Postępuj zgodnie z instrukcjami, aby zainstalować system Windows.

    Napiwek

    Może być konieczne zapoznanie się z instrukcjami producenta urządzenia, aby skonfigurować je do uruchamiania z dysku flash, jeśli ten proces nie działa na Twoim urządzeniu.

  3. Po zakończeniu wstępnej fazy konfiguracji i ponownym uruchomieniu urządzenia konfiguracja może rozpocząć się od początku. Jeśli ponownie rozpocznie się instalacja, anuluj ją, wyłącz komputer, usuń dysk flash, a następnie włącz urządzenie, aby kontynuować kolejną fazę instalacji.

    Napiwek

    Jeśli z jakiegoś powodu podczas procesu instalacji wystąpi błąd, zapoznaj się z następującymi artykułami, aby uzyskać wskazówki dotyczące rozwiązywania problemów.

Pełny skrypt

Ta sekcja zawiera pełny skrypt, który automatycznie wykonuje poszczególne kroki obsługi multimediów. Przed użyciem tego skryptu należy ukończyć sekcję Przygotowanie środowiska obsługi multimediów tego artykułu. Gdy wszystko będzie gotowe, skopiuj następujący skrypt programu PowerShell 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

Inne zasoby