共用方式為


使用媒體服務設定精靈 i.MX EVK 裝置

在本教學課程中,您會了解如何:

  • 將適用于 I.MX EVK 的 BOARD 支援套件驅動程式新增至 Windows 10 IoT 企業版 LTSC 2021 安裝媒體。
  • 使用 最新的累積服務更新更新Windows 10 IoT 企業版 LTSC 2021 安裝媒體。
  • 將 Windows 10 IoT 企業版 LTSC 2021 安裝 到您的 i.MX EVK 面板。

注意

您也可以使用[精靈快速入門手冊] 來設定一個精靈 i.MX EVK,您可以在 [WINDOWS IoT 企業版] 的 [精靈登陸] 頁面上 找到

必要條件

  • 適用于 ARM64 DVD 或 ISO 的 Windows 10 IoT 企業版 LTSC 2021
  • microSD 記憶卡 (最低 8 GB)
  • 下列其中一個不法評估板
    • i.MX 8M 四方 EVK
    • i.MX 8M 迷你 EVK
    • i.MX 8M Nano EVK
    • i.MX 8M Plus EVK
    • i.MX 8QuadXPlus EVK
    • i.MX 93 EVK

準備媒體服務環境

在本節中,您會收集為 i.MX EVK 面板新增面板支援套件所需的所有元件,並將最新的累積更新套用至 Windows 10 IoT 企業版 LTSC 安裝媒體。 完成後,您可以使用我們的標準程式來更新安裝媒體,在您的精靈 I.MX EVK 上安裝 Windows 10 IoT 企業版 LTSC 2021。

  1. 使用 管理員istrator 許可權啟動 PowerShell。
    我們將此 PowerShell 實例用於維護安裝媒體的端對端程式,以套用更新,並視需要併入不屬於 Windows 安裝媒體的必要驅動程式

    • 選取 [啟動]
    • 輸入 PowerShell
    • 以滑鼠右鍵按一下 Windows PowerShell
    • 選取 [ 以系統管理員身分執行]
  2. 建立資料夾以在媒體服務
    期間儲存檔案:使用 PowerShell 命令 New_Item 在技術人員電腦上建立下列資料夾,以儲存媒體服務期間所需的檔案。

    c:\MediaRefresh :媒體服務期間儲存檔案的父資料夾。
    c:\MediaRefresh\Out :服務期間更新的原始媒體複本。
    c:\MediaRefresh\Packages\LCU :最新的累積更新 c:\MediaRefresh\Packages\SSU :視需要維護堆疊更新
    c:\MediaRefresh\Drivers:HYPERVISOR i.MX8 EVK 驅動程式
    c:\MediaRefresh\Scripts :自訂安裝腳本。 c:\MediaRefresh\WIM :用於更新 boot.wim 和 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. 從原始媒體
    複製檔案 將所有檔案從原始安裝媒體複製到 c:\MediaRefresh\Out

    1. 如果您有實體媒體,請繼續進行步驟 b. ,否則您必須先使用 Mount-DiskImage 掛接 Windows IoT 企業版安裝 ISO,並使用 Get-Volume 顯示產生的掛接磁碟機號

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

      其中 <ISO Path> 是 ISO 的完整路徑

      記下 DriveLetter,因為我們在下一個步驟中需要使用它。

    2. 使用 Robocopy 將檔案從此處 <DriveLetter>c:\MediaRefresh\ISO\Out 所表示的原始安裝媒體複製到資料夾。

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

      其中 <DriveLetter> 代表與掛接 ISO 檔案相關聯的磁碟機號

    3. 將 boot.wim 和 install.wim 從 c:\MediaRefresh\Out\Sources 移至 c:\MediaRefresh\WIM 資料夾,這是用來更新 WIM 檔案的工作資料夾。

      robocopy c:\mediarefresh\out\sources c:\MediaRefresh\WIM *.wim /Mov
      
    4. 如果您未針對先前的命令掛接 ISO,請繼續進行下一個步驟,否則您必須先使用 Dismount-Diskimage 卸載 Windows IoT 企業版安裝 ISO

      Dismount-DiskImage -ImagePath <ISO Path>  
      

      其中 <ISO Path> 是 ISO 檔案的完整路徑。

  4. 收集服務套件

    1. 在 Windows Update 目錄中 找出最新Windows 10 IoT 企業版 LTSC 2021 的累積更新(也稱為 Windows 10 版本 21H2)。 最新的累積更新應該是清單中的第一個累積更新。 您可以使用 [上次更新] 資料行中的 值進行驗證。
    2. 選取 Download 並將檔案儲存 .msuc:\mediarefresh\packages\LCU 資料夾。
    3. 當您仍在檢視 Windows Update 目錄時,請選取您下載之累積更新的標題,然後在 [概觀] 索引標籤上選取 Support Url 。此連結會開啟網頁,其中包含更新的詳細資料。
    4. 向下捲動至 [如何取得此更新 ] 區段,以查看是否需要任何必要條件。 假設您未安裝任何更新。 如果列出必要條件,請將額外的 .msu 檔案下載至 c:\MediaRefresh\Packages\SSU 資料夾。
  5. 收集 HYPERVISOR i.MX 驅動程式

    1. BSP 預先建置的二進位檔 精明IMXWIN10IOT版本 下載到您的本機下載資料夾。

    2. 使用先前的 PowerShell 會話,使用 PowerShell 命令 Expand-Archive 來擷取所下載 ZIP 檔案的內容。

      Expand-Archive -LiteralPath <Path to ZIP file> -Destination c:\mediarefresh\NXP
      

      其中 <Path to ZIP file> 代表在上一個步驟中下載之 BSP 預建二進位檔案 ZIP 檔案的完整路徑。

    3. 使用 Robocopy ,將 drivers 資料夾從 c:\mediarefresh\nxp\IoTEntOnNXP\drivers 複製到 'c:\mediarefresh\drivers。

      robocopy c:\mediarefresh\nxp\IoTEntOnNXP\drivers c:\mediarefresh\drivers /e
      
  6. 建立 SetupComplete.cmd 腳本以安裝 VPU
    將下列腳本的內容儲存為 SetupComplete.cmdc:\MediaRefresh\Scripts 資料夾中的內容。

    如需使用 SetupComplete.cmd 的詳細資訊,請參閱 將自訂腳本新增至 Windows 安裝程式

    @echo off
    echo Detect VPU Variant
    set VPU_HANTRO_FF_STR="NXP0109\1" 
    set VPU_HANTRO_LF_STR="NXP0109\2" 
    set VPU_MALONE_STR="NXP0224\0" 
    set VPU_HANTRO_FF_ID=1 
    set VPU_HANTRO_LF_ID=2 
    set VPU_MALONE_ID=3 
    set VPU_NONE=0 
    set VPU_HANTRO=false 
    set VPU_MALONE=false 
    set vpu_variant=%VPU_NONE% 
    pnputil /enum-devices | find %VPU_HANTRO_FF_STR% > nul 
    if %errorlevel% == 0 ( set vpu_variant=%VPU_HANTRO_FF_ID% & goto vpu_found ) 
    pnputil /enum-devices | find %VPU_HANTRO_LF_STR% > nul 
    if %errorlevel% == 0 ( set vpu_variant=%VPU_HANTRO_LF_ID% & goto vpu_found ) 
    pnputil /enum-devices | find %VPU_MALONE_STR% > nul 
    if %errorlevel% == 0 ( set vpu_variant=%VPU_MALONE_ID% & goto vpu_found ) 
    
    :vpu_found 
    if %vpu_variant% == %VPU_HANTRO_FF_ID% set VPU_HANTRO=true 
    if %vpu_variant% == %VPU_HANTRO_LF_ID% set VPU_HANTRO=true 
    if %vpu_variant% == %VPU_MALONE_ID% set VPU_MALONE=true 
    if %VPU_MALONE% == true (
      echo Installing VPU MALONE 
      REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DeviceAccess\Classes\{40d466e9-e5fd-45a1-8707-e5059211c021}" /V Policy /T REG_DWORD /D 1 /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {34363248-0000-0010-8000-00AA00389B71} /T REG_SZ /D {16977919-9727-4e04-ABD6-7D04C3828977} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {35363248-0000-0010-8000-00AA00389B71} /T REG_SZ /D {16977919-9727-4e04-ABD6-7D04C3828977} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {43564548-0000-0010-8000-00AA00389B71} /T REG_SZ /D {16977919-9727-4e04-ABD6-7D04C3828977} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {30385056-0000-0010-8000-00AA00389B71} /T REG_SZ /D {16977919-9727-4e04-ABD6-7D04C3828977} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {5334504D-0000-0010-8000-00AA00389B71} /T REG_SZ /D {16977919-9727-4e04-ABD6-7D04C3828977} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {3253344D-0000-0010-8000-00AA00389B71} /T REG_SZ /D {16977919-9727-4e04-ABD6-7D04C3828977} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {5634504D-0000-0010-8000-00AA00389B71} /T REG_SZ /D {16977919-9727-4e04-ABD6-7D04C3828977} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {E06D8026-DB46-11CF-B4D1-00805F6CBBEA} /T REG_SZ /D {16977919-9727-4e04-ABD6-7D04C3828977} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\62ce7e72-4c71-4d20-b15d-452831a87d9d" /V MFTFLAGS /T REG_DWORD /D 00000008 /F 
      REG ADD "HKLM\SOFTWARE\Classes\CLSID\{16977919-9727-4e04-ABD6-7D04C3828977}" /D "i.MX8QM/QXP Malone VPU MFT hardware accelerator" /F 
      REG ADD "HKLM\SOFTWARE\Classes\CLSID\{16977919-9727-4e04-ABD6-7D04C3828977}\InprocServer32" /T REG_EXPAND_SZ /D "%SystemRoot%\System32\malonemft.dll" /F 
      REG ADD "HKLM\SOFTWARE\Classes\CLSID\{16977919-9727-4e04-ABD6-7D04C3828977}\InprocServer32" /V ThreadingModel /D "Both" /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\16977919-9727-4e04-ABD6-7D04C3828977" /D "i.MX8QM/QXP Malone VPU MFT hardware accelerator" /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\16977919-9727-4e04-ABD6-7D04C3828977" /V InputTypes /T REG_BINARY /D 7669647300001000800000AA00389B714832363400001000800000AA00389B717669647300001000800000AA00389B714832363500001000800000AA00389B717669647300001000800000AA00389B714845564300001000800000AA00389B717669647300001000800000AA00389B715650383000001000800000AA00389B717669647300001000800000AA00389B7126806DE046DBCF11B4D100805F6CBBEA7669647300001000800000AA00389B714D50345300001000800000AA00389B717669647300001000800000AA00389B714D34533200001000800000AA00389B717669647300001000800000AA00389B714D50345600001000800000AA00389B71 /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\16977919-9727-4e04-ABD6-7D04C3828977" /V OutputTypes /T REG_BINARY /D 7669647300001000800000AA00389B711500000000001000800000AA00389B71 /F    
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\16977919-9727-4e04-ABD6-7D04C3828977" /V MFTFlags /T REG_DWORD /D 0x00000002 /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\16977919-9727-4e04-ABD6-7D04C3828977" /V MFTFlags /T REG_DWORD /D 0x00000002 /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Categories\d6c02d4b-6833-45b4-971a-05a4b04bab91\16977919-9727-4e04-ABD6-7D04C3828977" /F 
    ) 
    if %VPU_HANTRO% == true ( 
      echo Installing VPU HANTRO
      REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DeviceAccess\Classes\{ADA9253B-628C-40CE-B2C1-19F489A0F3DA}" /V Policy /T REG_DWORD /D 1 /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {34363248-0000-0010-8000-00AA00389B71} /T REG_SZ /D {8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {35363248-0000-0010-8000-00AA00389B71} /T REG_SZ /D {8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {43564548-0000-0010-8000-00AA00389B71} /T REG_SZ /D {8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {30385056-0000-0010-8000-00AA00389B71} /T REG_SZ /D {8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {30395056-0000-0010-8000-00AA00389B71} /T REG_SZ /D {8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\62ce7e72-4c71-4d20-b15d-452831a87d9d" /V MFTFLAGS /T REG_DWORD /D 00000008 /F 
      REG ADD "HKLM\SOFTWARE\Classes\CLSID\{8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0}" /D "i.MX VPU MFT hardware accelerator" /F 
      REG ADD "HKLM\SOFTWARE\Classes\CLSID\{8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0}\InprocServer32" /T REG_EXPAND_SZ /D "%SystemRoot%\System32\imxvpumft.dll" /F 
      REG ADD "HKLM\SOFTWARE\Classes\CLSID\{8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0}\InprocServer32" /V ThreadingModel /D "Both" /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\8a12d5a9-69ec-4fe2-bf16-7b4c857d0dc0" /D "i.MX VPU MFT hardware accelerator" /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\8a12d5a9-69ec-4fe2-bf16-7b4c857d0dc0" /V OutputTypes /T REG_BINARY /D 7669647300001000800000AA00389B714E56313200001000800000AA00389B71 /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\8a12d5a9-69ec-4fe2-bf16-7b4c857d0dc0" /V MFTFlags /T REG_DWORD /D 0x00000002 /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Categories\d6c02d4b-6833-45b4-971a-05a4b04bab91\8a12d5a9-69ec-4fe2-bf16-7b4c857d0dc0" /F 
    ) 
    if %vpu_variant% == %VPU_HANTRO_FF_ID% ( 
      echo Installing VPU HANTRO FF
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {5334504D-0000-0010-8000-00AA00389B71} /T REG_SZ /D {8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {3253344D-0000-0010-8000-00AA00389B71} /T REG_SZ /D {8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {5634504D-0000-0010-8000-00AA00389B71} /T REG_SZ /D {8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\Preferred" /V {E06D8026-DB46-11CF-B4D1-00805F6CBBEA} /T REG_SZ /D {8A12D5A9-69EC-4FE2-BF16-7B4C857D0DC0} /F 
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\8a12d5a9-69ec-4fe2-bf16-7b4c857d0dc0" /V InputTypes /T REG_BINARY /D 7669647300001000800000AA00389B714832363400001000800000AA00389B717669647300001000800000AA00389B714832363500001000800000AA00389B717669647300001000800000AA00389B714845564300001000800000AA00389B717669647300001000800000AA00389B715650383000001000800000AA00389B717669647300001000800000AA00389B715650393000001000800000AA00389B717669647300001000800000AA00389B7126806DE046DBCF11B4D100805F6CBBEA7669647300001000800000AA00389B714D50345300001000800000AA00389B717669647300001000800000AA00389B714D34533200001000800000AA00389B717669647300001000800000AA00389B714D50345600001000800000AA00389B71 /F 
    ) 
    if %vpu_variant% == %VPU_HANTRO_LF_ID% ( 
      echo Installing VPU HANTRO LF
      REG ADD "HKLM\SOFTWARE\Classes\MediaFoundation\Transforms\8a12d5a9-69ec-4fe2-bf16-7b4c857d0dc0" /V InputTypes /T REG_BINARY /D 7669647300001000800000AA00389B714832363400001000800000AA00389B717669647300001000800000AA00389B714832363500001000800000AA00389B717669647300001000800000AA00389B714845564300001000800000AA00389B717669647300001000800000AA00389B715650383000001000800000AA00389B717669647300001000800000AA00389B715650393000001000800000AA00389B71 /F 
    ) 
    
    REM Disable Transparency
    REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /V DisableTransparency /T REG_EXPAND_SZ /D "reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize /V EnableTransparency /T REG_DWORD /D 0 /F"
    
    

檢閱

媒體服務環境現在已設定。 讓我們快速檢閱。

  • Windows 10 IoT 企業版 LTSC 2021 安裝已複製到 c:\mediarefresh\out
  • Windows 10 IoT 企業版 LTSC 2021 的最新累積更新已下載至 c:\mediarefresh\packages
  • 已下載並複製到 EVK BSP 驅動程式 I.MX c:\mediarefresh\drivers
  • 自訂安裝程式Complete.cmd,可設定您精靈裝置的 VPU 已儲存至 c:\mediarefresh\scripts

後續步驟

  1. 使用為 i.MX EVK 面板建立的媒體服務環境,完成Windows 10 IoT 企業版 LTSC 2021 安裝媒體的重新整理。

    1. 更新 Windows 預先安裝環境 (WinPE)
    2. 更新 Windows 10 IoT 企業版 LTSC 2021 映射
    3. 將更新的媒體複製到 microSD 記憶卡
  2. 請確定 EVK 面板 i.MX 處於 eMMC 開機模式。 若要瞭解如何設定您的面板,請參閱來自 NXP 的快速入門手冊。

  3. 將 microSD 記憶卡插入到[不法 I.MX EVK 面板] 插槽中。

  4. 連線 i.MX EVK 電源,並開啟電源以開機進入 Windows 設定體驗。

  5. 視窗設定會逐步引導您完成其餘的程式。

  6. 安裝程式的初始階段完成且您的裝置重新開機後,安裝程式可能會從頭重新開機。 如果安裝程式再次啟動,請取消安裝程式,然後關閉電腦,然後移除 microSD 記憶卡,然後開啟裝置以繼續進行下一個階段的安裝程式。

    提示

    如果基於某些原因,您在安裝程式期間遇到錯誤,請參閱下列文章以取得疑難排解指引。

完整腳本

本節包含完整腳本,可連續執行更新 Windows 預先安裝環境 (WinPE) 和 Update Windows 10 IoT 企業版 LTSC 2021 映射 的每個步驟 使用此腳本之前,您必須先完成 本文的準備媒體服務環境 一節。 準備好之後,請將下列 PowerShell 腳本複製到 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

其他資訊