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
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
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.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
Skopiuj pliki z oryginalnego nośnika
Skopiuj wszystkie pliki z oryginalnego nośnika instalacyjnego doc:\MediaRefresh\Out
.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 ISOZanotuj element DriveLetter, ponieważ będziemy musieli go użyć w następnym kroku.
Skopiuj pliki z oryginalnego nośnika instalacyjnego oznaczonego tutaj przez
<DriveLetter>
do folderuc:\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 ISOPrzenieś plik boot.wim i install.wim z
c:\MediaRefresh\Out\Sources
do folderuc:\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
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.
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 arm64Windows 10 IoT Enterprise LTSC 2021 19044 Pokaż historię aktualizacji Pokaż aktualizacje x64
Pokaż aktualizacje arm64Windows 10 IoT Enterprise LTSC 2019 17763 Pokaż historię aktualizacji Pokaż aktualizacje x64
Pokaż aktualizacje arm64Windows 10 IoT Enterprise LTSC 2016 14393 Pokaż historię aktualizacji Pokaż aktualizacje x64
Pokaż aktualizacje x86Windows 10 IoT Enterprise LTSC 2015 10240 Pokaż historię aktualizacji Pokaż aktualizacje x64
Pokaż aktualizacje x86[Opcjonalnie] Zbierz zewnętrzne sterowniki
Umieść sterowniki innych firm wymagane przez urządzenie w formacie nieskompresowanym w folderze głównymc:/MediaRefresh/drivers
lub jako podfoldery doc:/MediaRefresh/drivers
.[Opcjonalnie] Zbieranie skryptów konfiguracji
Umieść skrypty niestandardoweSetupcomplete.cmd
iErrorHandler.cmd
uruchamiane podczas lub po zakończeniu procesu Instalacji systemu Windows w folderzec:\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 .
Zamontuj WinPE boot.wim
Pierwszym krokiem aktualizowania środowiska WinPE jest utworzenie folderu tymczasowego o nazwie
mounted
wc:\mediarefresh
przy użyciu polecenia programu PowerShell new-itemMD c:\MediaRefresh\mounted
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
Teraz możemy zainstalować obraz WinPE przechowywany w
boot.wim
w indeksie 2 przy użyciu polecenia programu PowerShell Mount-WindowsImageMount-WindowsImage -ImagePath "c:\mediarefresh\wim\boot.wim" -Index 2 -Path "c:\mediarefresh\Mounted"
Zawartość obrazu WinPE przechowywanego w
boot.wim
w indeksie 2 jest teraz widoczna wc:\mediarefresh\mounted
.
Zastosuj sterowniki innych firm do WinPE
Zainstaluj sterowniki innych firm zebrane w folderzec:\mediarefresh\drivers
do WinPE wc:\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
Stosowanie aktualizacji obsługi do usługi WinPE
Zastosuj najnowszą aktualizację zbiorczą i jej zależności, które pobrałeś do folderuc:\mediarefresh\packages
, do środowiska WinPE znajdującego się wc:\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.Najpierw zastosuj zależność aktualizacji stosu obsługi.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
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.
Skopiuj zaktualizowane
Setup.exe
isetuphost.exe
. Przed kontynuowaniem, skopiuj zaktualizowanesetup.exe
isetuphost.exe
z WinPE wc:\mediarefresh\mounted\sources
doc:\mediarefresh\out\sources
, używając narzędzia Robocopy.Najpierw musimy usunąć atrybut ReadOnly w
c:\mediarefresh\mounted\sources\setup.exe
ic:\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
Teraz możemy skopiować
setup.exe
isetuphost.exe
zc:\mediarefresh\mounted\sources
doc:\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
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ść wc:\mediarefresh\mounted
. Niewykonanie tej czynności skutkuje błędem podczas próby odmontowania.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
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-ItemRD c:\MediaRefresh\mounted
Opublikuj
Boot.wim
w folderzeout
Teraz skopiuj zaktualizowaną
boot.wim
zc:\mediarefresh\wim
doc:\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.
instalowanie systemu operacyjnego install.wim
Pierwszym krokiem aktualizowania środowiska WinPE jest utworzenie folderu tymczasowego o nazwie
mounted
wc:\mediarefresh
za pomocą polecenia programu PowerShell new-item.MD c:\MediaRefresh\mounted
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
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"
Zawartość magazynu obrazów systemu Windows IoT Enterprise w pliku install.wim pod indeksem 2 jest teraz widoczna w
c:\mediarefresh\mounted
.
Instalowanie sterowników innych firm
Zainstaluj sterowniki innych firm zebrane w folderzec:\mediarefresh\drivers
do obrazu systemu operacyjnego wc:\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.Dodaj skrypty konfiguracyjne niestandardowe
Przed dodaniem skryptów konfiguracji niestandardowych do obrazu systemu operacyjnego, najpierw utwórz folder
scripts
wc:\mediarefresh\mounted\windows\setup\
za pomocą polecenia programu PowerShell New-Item.MD c:\mediarefresh\mounted\windows\setup\scripts
Skopiuj skrypty z
c:\mediarefresh\scripts
doc:\mediarefresh\mounted\windows\setup\scripts
przy użyciu narzędzia Robocopy.robocopy c:\mediarefresh\scripts c:\mediarefresh\mounted\windows\setup\scripts *.cmd
Stosowanie pakietów obsługi do obrazu systemu operacyjnego
Zastosuj najnowszą aktualizację zbiorczą i jej zależności, które pobrałeś do folderuc:\mediarefresh\packages
, do środowiska WinPE znajdującego się wc:\mediarefresh\mounted
, korzystając z polecenia PowerShell Add-WindowsPackage.Najpierw zastosuj zależność aktualizacji stosu obsługi.
Add-WindowsPackage -Path "c:\mediarefresh\mounted" -PackagePath "c:\mediarefresh\packages\SSU"
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.
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ść wc:\mediarefresh\mounted
. Niewykonanie tej czynności skutkuje błędem podczas próby odmontowania.Dismount-WindowsImage -path "c:\mediarefresh\mounted" -save
Usuń folder tymczasowy
mounted
Po pomyślnym odmontowaniu pliku boot.wim możemy teraz usunąć folder tymczasowyc:\mediarefresh\mounted
za pomocą polecenia programu PowerShell Remove-ItemRD c:\mediarefresh\mounted
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 folderzec:\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
Podłącz dysk flash do urządzenia docelowego.
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.
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.
- Rozwiązywanie problemów z wdrażaniem i plikami dziennika
- pliki dziennika instalacji systemu Windows i dzienniki zdarzeń
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