PC のリカバリー機能へのスクリプトの追加

更新日: 2013年10月

適用対象: Windows 8, Windows 8.1

PC のリカバリー拡張スクリプトとも呼ばれるスクリプトを追加して、PC のリカバリーのエクスペリエンスをカスタマイズできます。たとえば、スクリプトを使って重要なカスタマイズを保存したり、[PC をリフレッシュする] 機能や [PC を初期状態に戻す] 機能の実行時にシステム診断を実行したりできます。 スクリプトは、回復プロセスの複数のポイントに追加できます。詳しくは、「PC のリカバリーの概要」をご覧ください。

これらの拡張ポイントは、ファイルのコピーやドライバーの挿入などの基本的な操作向けです。

  1. ログ ファイルの保存または取得、パーティションの確認、アプリケーションのインストールを行うカスタム スクリプトをメモ帳で作成できます。

    Important重要
    スクリプトは、次の要件を満たしている必要があります。

    • .cmd ファイルまたは .exe ファイルとしてフォーマットされている。

    • 既定の Windows RE イメージ (winre.wim) に存在しない Windows PE オプション コンポーネントに依存しない。

    • 既定の Windows RE イメージ (winre.wim) に存在しないバイナリ (.exe ファイル、.dll ファイル) に依存しない。

    • グラフィカル ユーザー インターフェイス (GUI) を表示せずに実行される。

    • 各拡張ポイントで 5 分以内に意図したすべての機能を完了する。

    スクリプトは、成功した場合には 0 (ゼロ) を返す必要があります。PC のリカバリーが 0 以外の値を受け取った場合、次の手順が実行されます。

    • [PC をリフレッシュする] 機能が実行されている場合: すべてのシステム変更がロールバックされます。スクリプトまたは実行可能ファイルが Windows の [PC 設定] メニューから起動された場合、システムは Windows で再起動されます。スクリプトまたは実行可能ファイルが Windows RE またはブート オプション メニューから起動された場合、システムは Windows RE のままで、エラー メッセージが表示されます。

    • [PC を初期状態に戻す] 機能が実行されている場合: エラーが無視されます。スクリプトまたは実行可能ファイルは、リセット処理の次のステップに進み、エラーをログに記録します。

    必要な場合は、次の場所を記憶域に使うことができます。

    • Windows PE RAM ドライブ (X:)。この仮想ドライブは、Windows PE によって作成され、[PC のリフレッシュ] 処理の実行中、アクティブのままになります。この仮想ドライブを [PC のリフレッシュ] 機能で使うと、パーティションがリフレッシュされる前にデータを保存し、パーティションのリフレッシュが完了した後にデータを復元できます。使用可能なメモリの量は、システム上の RAM の量から完全に展開したときの Windows RE ツールに必要な RAM の量を差し引いたものに制限されます。Windows RE のマウントと完全に展開されたファイル サイズについて詳しくは、「Windows RE のカスタマイズ」をご覧ください。

    • 指定された OEM パーティション。パーティションに余分の空き領域を残しておくことができます。たとえば、回復イメージ パーティションに空き領域を残しておき、スクリプトを使って一時的にドライブ文字を割り当ててから、そのパーティションにファイルを保存することができます。ただし、ユーザーが回復メディアを使ってディスクのパーティション分割をやり直した場合、これらのパーティション上のデータは回復処理中に失われる可能性があります。

    例 1: ログ ファイルを保存する

    次のサンプル スクリプトは、そのままであれば削除されるファイルをメモリ内の一時的な場所に配置することによって保持します。これらのファイルは、もう 1 つのサンプル スクリプトである RetrieveLogFiles.cmd によって取得されます。

    :rem == SaveLogFiles.cmd
    
    :rem == This sample script preserves files that would 
    :rem    otherwise be removed by placing them in a 
    :rem    temporary location in memory, to be retrieved by
    :rem    RetrieveLogFiles.cmd.
    
    :rem == 1. Use the registry to identify the location of
    :rem       the new operating system and the primary hard
    :rem       drive. For example, 
    :rem       %TARGETOS% may be defined as C:\Windows
    :rem       %TARGETOSDRIVE% may be defined as C:
    for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C
    
    for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A
    
    :rem == 2. Copy old logs to a temporary folder in memory
    mkdir X:\Temp
    xcopy %TARGETOS%\Logs\*.* X:\temp /cherkyi
    
    EXIT 0
    

    例 2: ログ ファイルを取得する

    次のサンプル スクリプトは、SaveLogFiles.cmd スクリプトによってメモリ内に保存されたファイルを取得し、システムにもう一度追加します。さらにシステム診断を実行し、その後で出力を C:\Fabrikam フォルダーに送信します。

    :rem == RetrieveLogFiles.cmd
    
    :rem == This sample script retrieves the files that 
    :rem    were saved in memory by 
    :rem    SaveLogFiles.cmd,
    :rem    and adds them back to the system.
    :rem
    :rem    It also runs a system diagnostic, and sends the output
    :rem    to the C:\Fabrikam folder.
    
    
    :rem == 1. Use the registry to identify the location of
    :rem       the new operating system and the primary hard
    :rem       drive. For example, 
    :rem       %TARGETOS% may be defined as C:\Windows
    :rem       %TARGETOSDRIVE% may be defined as C:
    for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C
    
    for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A
    
    :rem == 2. Copy the old logs to the new OS 
    :rem       at C:\Windows\OldLogs
    mkdir %TARGETOS%\OldLogs
    xcopy X:\Temp\*.* %TARGETOS%\OldLogs /cherkyi
    
    :rem == 3. Run system diagnostics using the
    :rem       DirectX Diagnostic tool, and save the 
    :rem       results to the C:\Fabrikam folders. ==
    
    mkdir %TARGETOSDRIVE%\Fabrikam
    %TARGETOS%\system32\dxdiag.exe /whql:off /t %TARGETOSDRIVE%\Fabrikam\DxDiag-TestLogFiles.txt
    
    EXIT 0
    

  1. メモ帳を使って、PC のリカバリー拡張スクリプトをポイントする構成ファイル (ResetConfig.xml) を作ります。このファイルについて詳しくは、「ResetConfig XML リファレンス」をご覧ください。

    <?xml version="1.0" encoding="utf-8"?>
    <!-- ResetConfig.xml -->
       <Reset>
          <Run Phase="BasicReset_BeforeImageApply">
             <Path>SaveLogFiles.cmd</Path>
             <Duration>4</Duration>
          </Run>      
          <Run Phase="BasicReset_AfterImageApply">
             <Path>RetrieveLogFiles.cmd</Path>
             <Duration>2</Duration>
          </Run>
          <Run Phase="FactoryReset_AfterDiskFormat">
             <Path>CheckPartitions.exe</Path>
             <Duration>2</Duration>
          </Run>
          <Run Phase="FactoryReset_AfterImageApply">
             <Path>InstallApps.cmd</Path>
             <Param>/allApps</Param>
             <Duration>2</Duration>
          </Run>
          <!-- May be combined with Recovery Media Creator
               configurations – insert SystemDisk element here -->
       </Reset>
    

    ここで、SaveLogFiles.cmd、RetrieveLogFiles.cmd、CheckPartitions.exe、InstallApps.cmd はすべて架空のスクリプトです。

  2. [ファイル] メニューの [名前を付けて保存] をクリックします。[エンコード] ボックスで [UTF-8] をクリックし、このファイルを E:\Recovery\RecoveryImage\ResetConfig.xml として保存します。

    ここで、E は USB フラッシュ ドライブまたはその他のリムーバブル メディアのドライブ文字です。ANSI コーディングは使わないでください。

    noteメモ
    同じ ResetConfig.xml ファイルを使って、回復メディアを作成するように Windows を構成できます。詳しくは、「PC のリカバリー機能を展開する」をご覧ください。

  1. 対象のコンピューターに、構成ファイルが保存されている USB フラッシュ ドライブを挿入します。

  2. 対象のコンピューターに構成ファイルをコピーします。

    Copy E:\Recovery\RecoveryImage\* R:\RecoveryImage\*
    

    ここで、E は USB フラッシュ ドライブのドライブ文字です。

これで PC のリカバリーのエクスペリエンスをカスタマイズできたので、PC のリカバリー (Install.wim) の回復イメージを回復イメージ パーティションに展開できます。

Diskpart スクリプト、ResetConfig.xml ファイル、PC のリカバリーの回復イメージ (install.wim) を対象の PC の回復イメージ パーティションにコピーするには、「PC のリカバリー機能を展開する」の手順に従ってください。

表示:
© 2014 Microsoft