次の方法で共有


メディア サービスを使用した NXP i.MX EVK デバイスのセットアップ

このチュートリアルでは、次の作業を行う方法について説明します。

  • i.MX EVK 向け NXP のボード サポート パッケージ ドライバーを Windows 10 IoT Enterprise LTSC 2021 インストール メディアに追加します。
  • 最新の累積的なサービス更新プログラムを使用して、Windows 10 IoT Enterprise LTSC 2021 インストール メディアを更新します。
  • i.MX EVK ボードに Windows 10 IoT Enterprise LTSC 2021 をインストールします。

Note

NXP ランディング ページの Windows IoT Enterprise にある NXP クイック スタート ガイドを使用して NXP i.MX EVK を設定することもできます。

前提条件

  • Arm64 DVD または ISO 向け Windows 10 IoT Enterprise LTSC 2021
  • microSD カード (最小 8 GB)
  • 次のいずれかの NXP 評価ボード
    • i.MX 8M Quad EVK
    • i.MX 8M Mini 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 Enterprise LTSC インストール メディアに最新の累積的な更新プログラムを適用するために必要なすべてのコンポーネントを収集します。 完了したら、インストール メディアを更新するための標準プロセスを使用して、NXP i.MX EVK に Windows 10 IoT Enterprise LTSC 2021 をインストールできます。

  1. 管理者特権で PowerShell を開始します。
    この PowerShell のインスタンスは、更新プログラムを適用するためにインストール メディアにサービスを提供するエンド ツー エンド プロセスに使用し、必要に応じて、Windows インストール メディアの一部ではない必要なドライバーを組み込みます

    • [スタート] を選択します
    • 「PowerShell」と入力します
    • Windows PowerShell を右クリックします
    • [管理者として実行] を選択します
  2. メディア サービス中にファイルを格納するフォルダーを作成する
    PowerShell コマンド New_Item を使用して、メディア サービス中に必要なファイルを格納する次のフォルダーをテクニシャン PC 上で作成します。

    c:\MediaRefresh: メディア サービス中にファイルを格納するための親フォルダー。
    c:\MediaRefresh\Out: サービス中に更新された元のメディアのコピー。
    c:\MediaRefresh\Packages\LCU: 最新の累積的な更新プログラム c:\MediaRefresh\Packages\SSU: 必要に応じたサービス スタック更新プログラム
    c:\MediaRefresh\Drivers: NXP 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 Enterprise インストール 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 Enterprise インストール ISO のマウントを解除する必要があります

      Dismount-DiskImage -ImagePath <ISO Path>  
      

      <ISO Path> は、ISO ファイルに対する完全修飾パスです。

  4. サービス パッケージを収集する

    1. Windows Update カタログで、Windows 10 IoT Enterprise LTSC 2021 (Windows 10 バージョン 21H2 とも呼ばれます) の最新の累積的な更新プログラムを検索します。 最新の累積的な更新プログラムは、一覧の最初にあるものである必要があります。 [更新日時] 列の値を使用して確認できます。
    2. Download を選択して .msu ファイルを c:\mediarefresh\packages\LCU フォルダーに保存します。
    3. Windows Update カタログを表示したまま、ダウンロードした累積的な更新プログラムのタイトルを選択し、[概要] タブの Support Url を選択します。このリンクをクリックすると、更新プログラムの詳細が記載された Web ページが開きます。
    4. [この更新プログラムを入手する方法] セクションまで下にスクロールして、必要な前提条件があるかどうかを確認します。 更新プログラムがインストールされていないとします。 前提条件が一覧表示されている場合は、c:\MediaRefresh\Packages\SSU フォルダーに追加の .msu ファイルをダウンロードします。
  5. NXP i.MX ドライバーを収集する

    1. NXP IMXWIN10IOT Releases からローカルのダウンロード フォルダーに BSP 事前構築済みバイナリをダウンロードします。

    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 を使用して、ドライバー フォルダーを c:\mediarefresh\nxp\IoTEntOnNXP\drivers から `c:\mediarefresh\drivers にコピーします。

      robocopy c:\mediarefresh\nxp\IoTEntOnNXP\drivers c:\mediarefresh\drivers /e
      
  6. VPU をインストールする SetupComplete.cmd スクリプトを作成する
    次のスクリプトの内容を SetupComplete.cmd として c:\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 Enterprise LTSC 2021 インストールが c:\mediarefresh\out にコピーされました。
  • Windows 10 IoT Enterprise LTSC 2021 の最新の累積的な行員プログラムが c:\mediarefresh\packages にダウンロードされました。
  • NXP i.MX EVK BSP ドライバーがダウンロードされ、c:\mediarefresh\drivers にコピーされました
  • NXP デバイス用に VPU を構成するカスタム SetupComplete.cmd が c:\mediarefresh\scripts に保存されました。

次のステップ

  1. i.MX EVK ボード用に作成したメディア サービス環境を使用して、Windows 10 IoT Enterprise LTSC 2021 インストール メディアの更新を完了します。

    1. Windows プレインストール環境 (WinPE) を更新する
    2. Windows 10 IoT Enterprise LTSC 2021 イメージを更新する
    3. 更新されたメディアを microSD カードにコピーする
  2. NXP i.MX EVK ボードが eMMC ブート モードであることを確認します。 ボードを構成する方法については、NXP のクイック スタート ガイドを参照してください。

  3. microSD カードを NXP i.MX EVK ボードのスロットに挿入します。

  4. 電源を i.MX EVK に接続し、電源をオンにして Windows セットアップを起動します。

  5. Windows セットアップで、残りのプロセスの説明をご覧ください。

  6. セットアップの初期フェーズが完了し、デバイスが再起動すると、セットアップが再び最初から開始される場合があります。 セットアップが再び開始された場合は、セットアップを取り消し、コンピューターをシャットダウンしてから microSD カードを取り出し、デバイスの電源をオンにしてセットアップの次のフェーズに進みます。

    ヒント

    何らかの理由でセットアップ プロセス中にエラーが発生した場合は、トラブルシューティングのガイダンスに関する次の記事を参照してください。

完全なスクリプト

このセクションには、Windows プレインストール環境の更新 (WinPE) から Windows 10 IoT Enterprise 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

その他の情報