組織での Windows To Go の展開

ここでは、組織で Windows To Go を展開するために役立つ情報を提供します。 展開を開始する前に、トピック「Windows To Go: 機能概要」と「Windows To Go に向けた組織の準備」を確認して、適切なハードウェアがあり、展開を完了する準備ができていることを確認してください。その後、このトピックの手順を使って Windows To Go の展開を開始できます。

  

このトピックでは、サンプル Windows PowerShell コマンドレットを紹介します。ここで説明する手順の一部はこのコマンドレットで自動化できます。詳しくは、コマンドレットの使用に関するページをご覧ください。

 

展開のヒント

展開プロセスを開始する前に注意が必要な項目のリストを次に示します。

  • Windows To Go 用には推奨される USB ドライブのみを使ってください。他のドライブの使用はサポートされません。Windows To Go ドライブとして使う認定を受けている最新の USB ドライブについては、「Windows To Go のハードウェアに関する考慮事項」で一覧を確認してください。

  • 新しいワークスペースをプロビジョニングした後は、必ず通知領域またはエクスプローラーに表示される [ハードウェアを安全に取り外してメディアを取り出す] コントロールを使って Windows To Go ドライブを取り出してください。先に取り出さずに USB ポートからドライブの接続を外すと、ドライブが破損することがあります。

  • Windows To Go ワークスペースを実行しているときは、必ずドライブを取り外す前にワークスペースをシャットダウンしてください。

  • System Center 2012 Configuration Manager SP1 以降には、ユーザーによる Windows To Go ドライブの自己プロビジョニングのサポートが含まれています。Configuration Manager は、Microsoft TechNet Evaluation Center から評価目的でダウンロードできます。この展開オプションについて詳しくは、Configuration Manager で Windows To Go をプロビジョニングする方法に関するページをご覧ください。

  • USB ドライブの複製プログラムを使って Windows To Go ドライブを複製する方法を計画している場合は、ドライブでオフラインのドメイン参加や BitLocker を構成しないでください。

基本的な展開の手順

カスタマイズしたオペレーティング システム イメージを使っている場合を除き、初期の Windows To Go ワークスペースはドメイン参加せず、アプリケーションが含まれません。これは、デスクトップまたはノート PC で Windows を新規インストールする場合とまったく同じです。展開を計画するときは、Windows to Go ドライブをドメインに参加させて、組織のユーザーが必要とする標準的なアプリケーションをインストールするような方法を開発する必要があります。そのような方法は、デスクトップやノート PC にドメイン特権とアプリケーションを設定するときに使う方法に似ている可能性があります。ここでは、USB ドライブに適切なディスク レイアウトを作成し、オペレーティング システム イメージと Windows To Go に固有のコア構成をドライブに適用するための手順について説明します。次の手順は、小規模と大規模の両方の Windows To Go 展開シナリオで使われます。

これらの手順を完了すると、ユーザーに配布して用途に合わせて適宜カスタマイズできる汎用の Windows To Go ドライブが作成されます。このドライブは USB ドライブの複製プログラムで使うのにも適しています。特定の展開シナリオでは次の基本的な手順以外の手順も含まれますが、そのような追加の展開の考慮事項は、従来の PC の展開と同様であり、Windows To Go の展開計画に組み込むことができます。追加情報については、「Windows の展開オプション」をご覧ください。

警告  

汎用の Windows To Go ドライブを USB 複製プログラムのマスター ドライブとして使うことを計画している場合、ドライブが起動しない必要があります。ドライブが誤って起動された場合は、複製前に再プロビジョニングする必要があります。

 

Windows To Go ワークスペースの作成

この手順では、Windows To Go ドライブで使われるオペレーティング システム イメージを作成します。Windows To Go 作成ウィザードを使うことも、Windows PowerShell とコマンド ライン ツールを組み合わせて手動で行うこともできます。

警告  

1 つの Windows To Go ドライブを作成する推奨の方法は、Windows 10 Enterprise と Windows 10 Education に付属する Windows To Go 作成ウィザードを使うことです。

 

Mt186418.wedge(ja-jp,VS.85).gifWindows To Go 作成ウィザードを使って Windows To Go ワークスペースを作成するには

  1. 管理者特権を持つアカウントを使って、Windows PC にサインインします。

  2. お使いの PC に Windows To Go ドライブとして使う USB ドライブを挿入します。

  3. .wim ファイルの場所 (ネットワーク共有、DVD、または USB ドライブ) にアクセスできることと、sysprep を使って一般化された有効な Windows 10 Enterprise または Windows 10 Education イメージが含まれていることを確認します。多くの環境では、Windows To Go とデスクトップの展開の両方に同じイメージを使うことができます。

      

    .wim ファイルについて詳しくは、Windows システム イメージ マネージャー (Windows SIM) のテクニカル リファレンスに関するページをご覧ください。sysprep の使い方について詳しくは、Sysprep の概要に関するページをご覧ください。

     

  4. Cortana を使って、Windows To Go を検索し、Enter キーを押します。[ユーザー アカウント制御] ダイアログ ボックスが表示された場合は、表示されている操作が目的の操作であることを確認して、[はい] をクリックします。Windows To Go 作成ウィザードが開きます。

  5. [使用するドライブを選択してください] ページで、前に挿入した USB ドライブを表すドライブを選択し、[次へ] をクリックします。

  6. [Windows イメージの選択] ページで、[検索場所の追加] をクリックし、.wim ファイルの場所に移動し、[フォルダーの選択] をクリックします。このフォルダーにあるインストール可能なイメージが表示されます。使用する Windows 10 Enterprise または Windows 10 Education イメージを選択し、[次へ] をクリックします。

  7. (省略可能) [BitLocker パスワードの設定 (オプション)] ページで、[BitLocker を Windows To Go ワークスペースで使用する] を選択すると、Windows To Go ドライブを暗号化できます。この時点でドライブを暗号化しない場合は、[スキップ] をクリックします。後で BitLocker 保護を追加する場合は、Windows To Go ドライブで BitLocker 保護を有効にする方法に関するページで手順をご覧ください。

    警告  

    USB 複製プログラムを使って複数の Windows To Go ドライブを作成することを計画している場合は、BitLocker を有効にしないでください。BitLocker で保護されたドライブは複製しないでください。

     

    今すぐ Windows To Go ドライブを暗号化する場合:

    • パスワードを入力します。パスワードは 8 文字以上で、組織のパスワード複雑性ポリシーに準拠したものにしてください。このパスワードはオペレーティング システムが起動する前に提供されるため、使う文字はファームウェアで解釈できる必要があります。一部のファームウェアでは、非 ASCII 文字はサポートされません。

    • パスワードを再入力し、[次へ] をクリックします。

      重要  

      BitLocker 回復パスワードは、ワークスペースを自動的に作成するために使うコンピューターのドキュメント ライブラリに保存されます。組織が Active Directory ドメイン サービス (AD DS) を使って回復パスワードを保存している場合、AD DS でワークスペースを作成するために使われるコンピューターのコンピューター アカウントにも回復パスワードが保存されます。このパスワードは、パスワードを紛失したり忘れたりした場合など、前の手順で指定された BitLocker パスワードを使うことができないためにドライブへのアクセスを回復する必要がある場合にのみ使われます。BitLocker と AD DS について詳しくは、Active Directory ドメイン サービスの考慮事項に関するページをご覧ください。

       

  8. 挿入された USB ドライブが Windows To Go 用にプロビジョニングするものであることを確認し、[作成] をクリックして Windows To Go ワークスペースの作成プロセスを開始します。

    警告  

    識別された USB ドライブは、Windows To Go プロビジョニング プロセスの一部として再フォーマットされ、ドライブ上のすべてのデータが消去されます。

     

  9. 作成プロセスを完了するまで待ちます。完了するには 20 ~ 30 分かかることがあります。完了ページが表示され、Windows To Go ワークスペースが使用可能になったことが示されます。完了ページから、Windows To Go スタートアップ オプションを構成して、現在のコンピューターを Windows To Go のホスト コンピューターにすることができます。

Windows To Go ワークスペースを開始する準備ができました。Windows To Go スタートアップ オプションを使ってホスト コンピューターを準備し、Windows To Go ドライブを起動できます。

Windows PowerShell と同等のコマンド

以下の Windows PowerShell コマンドレットは、前述の手順と同じ機能を実行します。ここでは書式上の制約のために、折り返されて複数の行にわたって表示される場合もありますが、各コマンドレットは 1 行に入力します。この手順は、Windows 10 を実行している PC でのみ使うことができます。始める前に、Windows To Go ドライブとしてプロビジョニングする USB ドライブだけが PC に接続されていることを確認します。

  1. Cortana を使って powershell を検索し、[Windows PowerShell] を右クリックして [管理者として実行] を選択します。

  2. Windows PowerShell セッションで次のコマンドを入力して、FAT32 のシステム パーティションと NTFS フォーマットのオペレーティング システム パーティションで使うマスター ブート レコード (MBR) ディスクをパーティション分割します。このディスク レイアウトでは、UEFI または BIOS ファームウェアを使うコンピューターをサポートできます。

    # The following command will set $Disk to all USB drives with >20 GB of storage
    
    $Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }
    
    #Clear the disk. This will delete any data on the disk. (and will fail if the disk is not yet initialized. If that happens, simply continue with ‘New-Partition…) Validate that this is the correct disk that you want to completely erase.
    # To skip the confirmation prompt, append –confirm:$False
    Clear-Disk –InputObject $Disk[0] -RemoveData 
    
    # This command initializes a new MBR disk 
    Initialize-Disk –InputObject $Disk[0] -PartitionStyle MBR
    
    # This command creates a 350 MB system partition
    $SystemPartition = New-Partition –InputObject $Disk[0] -Size (350MB) -IsActive 
    
    # This formats the volume with a FAT32 Filesystem
    # To skip the confirmation dialog, append –Confirm:$False
    Format-Volume -NewFileSystemLabel "UFD-System" -FileSystem FAT32 `
    -Partition $SystemPartition
    
    # This command creates the Windows volume using the maximum space available on the drive. The Windows To Go drive should not be used for other file storage.
    $OSPartition = New-Partition –InputObject $Disk[0] -UseMaximumSize
    Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS `
    -Partition $OSPartition
    
    # This command assigns drive letters to the new drive, the drive letters chosen should not already be in use.
    Set-Partition -InputObject $SystemPartition -NewDriveLetter "S"
    Set-Partition -InputObject $OSPartition -NewDriveLetter "W"
    
    # This command sets the NODEFAULTDRIVELETTER flag on the partition which prevents drive letters being assigned to either partition when inserted into a different computer.
    Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE
    
  3. 次に、ディスク上に作成したオペレーティング システム パーティションに対して、Windows To Go で使うオペレーティング システム イメージを適用する必要があります (イメージのサイズと USB 接続の速度によっては 30 分以上かかることがあります)。次のコマンドは、展開イメージのサービスと管理コマンド ライン ツール (DISM) を使って行う方法を示しています。

    ヒント  

    .WIM ファイルで有効な Enterprise イメージにインデックス番号を正しく設定する必要があります。

     

    #The WIM file must contain a sysprep generalized image.
    dism /apply-image /imagefile:n:\imagefolder\deploymentimages\mywtgimage.wim /index:1 /applydir:W:\ 
    
  4. ここで、bcdboot コマンド ライン ツールを使って、必要なブート コンポーネントをディスク上のシステム パーティションに移動します。これにより、ブート コンポーネント、オペレーティング システム バージョン、アーキテクチャを確実に一致させることができます。/f ALL パラメーターは、UEFI と BIOS のブート コンポーネントがディスクのシステム パーティションに配置される必要があることを示します。この手順を次の例で示します。

    W:\Windows\System32\bcdboot W:\Windows /f ALL /s S:
    
  5. SAN ポリシー「4」(OFFLINE_INTERNAL) を適用して、オペレーティング システムが内部接続されているすべてのディスクを自動的にオンラインにしないようにします。この処理を実行するには、san_policy.xml ファイルをディスクに作成して保存します。この手順を次の例で示します。

    <?xml version='1.0' encoding='utf-8' standalone='yes'?>
    <unattend xmlns="urn:schemas-microsoft-com:unattend">
      <settings pass="offlineServicing">
        <component
            xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            language="neutral"
            name="Microsoft-Windows-PartitionManager"
            processorArchitecture="x86"
            publicKeyToken="31bf3856ad364e35"
            versionScope="nonSxS"
            >
          <SanPolicy>4</SanPolicy>
        </component>
       <component
            xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            language="neutral"
            name="Microsoft-Windows-PartitionManager"
            processorArchitecture="amd64"
            publicKeyToken="31bf3856ad364e35"
            versionScope="nonSxS"
            >
          <SanPolicy>4</SanPolicy>
        </component>
     </settings>
    </unattend>
    
  6. 前の手順で作成した san_policy.xml ファイルを Windows To Go ドライブ (これまでの例の W:) 上の Windows パーティションのルート ディレクトリに配置し、次のコマンドを実行します。

    Dism.exe /Image:W:\ /Apply-Unattend:W:\san_policy.xml
    
  7. Windows To Go で Windows 回復環境の使用を無効にする応答ファイル (unattend.xml) を作成します。次のコード サンプルを使って新しい応答ファイルを作成することも、次のコード サンプルを既存の応答ファイルに貼り付けることもできます。

    <?xml version="1.0" encoding="utf-8"?>
    <unattend xmlns="urn:schemas-microsoft-com:unattend">
        <settings pass="oobeSystem">
            <component name="Microsoft-Windows-WinRE-RecoveryAgent"
              processorArchitecture="x86"
              publicKeyToken="31bf3856ad364e35" language="neutral" 
              versionScope="nonSxS"
              xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" 
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <UninstallWindowsRE>true</UninstallWindowsRE>
            </component>
           <component name="Microsoft-Windows-WinRE-RecoveryAgent"
              processorArchitecture="amd64"
              publicKeyToken="31bf3856ad364e35" language="neutral" 
              versionScope="nonSxS"
              xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" 
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <UninstallWindowsRE>true</UninstallWindowsRE>
            </component>
        </settings>  
    </unattend>
    

    応答ファイルを保存したら、unattend.xml を Windows To Go ドライブの sysprep フォルダー (たとえば、W:\Windows\System32\sysprep\) にコピーします。

    重要  

    セットアップの無人セットアップ ファイルは、場所に基づいて処理されます。一時的な無人セットアップ ファイルは %systemroot%\panther フォルダーに配置されます。このフォルダーでインストール情報が最初に確認されます。作成した unattend.xml ファイルが確実に使われるようにするため、そのフォルダーに unattend.xml ファイルの以前のバージョンが含まれていないことを確認する必要があります。

    このコンピューターで Windows To Go デバイスを起動しないようにする場合や、別の PC で起動するために取り外す場合は、ドライブを PC から物理的に取り外す前に安全に切断するため、必ず [ハードウェアを安全に取り外してメディアを取り出す] オプションを使ってください。

     

Windows To Go ワークスペースを開始する準備ができました。これで、Windows To Go スタートアップ オプションを使ってワークスペース構成をテストするようにホスト コンピューターを準備したり、ワークスペースでオフライン ドメイン参加を構成したり、または、Windows To Go ドライブで BitLocker 保護を有効化したりできます。

ホスト コンピューターを準備するには

Windows 8 以降を実行しているコンピューターは、Windows To Go ワークスペースが起動時に利用できるときは常に Windows To Go を自動的に使うホスト コンピューターとして構成できます。ホスト コンピューターで Windows To Go スタートアップ オプションが有効な場合、Windows To Go ドライブがコンピューターに接続されているときには常にスタートアップが Windows To Go ドライブに迂回されます。これにより、ホスト コンピューターの使用から Windows To Go ワークスペースの使用に切り替えることが簡単になります。

ヒント  

ホスト コンピューターとして Windows 7 を実行している PC を使う場合は、ホスト コンピューターの準備に役立つ情報について Windows To Go を使うように BIOS 設定を構成するためのヒントに関するページをご覧ください。

 

Windows To Go ワークスペースを使う場合は、単にコンピューターをシャットダウンし、Windows To Go ドライブを接続してから、コンピューターを起動します。ホスト コンピューターを使うには、Windows To Go ワークスペースをシャットダウンし、Windows To Go ドライブを切断してから、コンピューターを起動します。

Windows 10 を実行しているホスト コンピューターの Windows To Go スタートアップ オプションを設定するには

  1. Cortana を使って、Windows To Go スタートアップ オプションを検索し、Enter キーを押します。

  2. [Windows To Go スタートアップ オプション] ダイアログ ボックスで、[はい] を選択し、[変更の保存] をクリックして USB から起動するようにコンピューターを構成します。

Windows 8 または Windows 8.1 を実行するホスト コンピューターの場合:

  1. Windows ロゴ キーと W キーを同時に押し、Windows To Go スタートアップ オプションを検索し、Enter キーを押します。
  2. [Windows To Go スタートアップ オプション] ダイアログ ボックスで、[はい] を選択し、[変更の保存] をクリックして USB から起動するようにコンピューターを構成します。

次のグループ ポリシー設定を有効にすると、自動的に USB ドライブから開始するように組織のコンピューターを構成することができます。

\\Computer Configuration\Administrative Templates\Windows Components\Portable Operating System\Windows To Go Default Startup Options

このポリシー設定を有効にすると、コンピューターの起動時に USB ドライブが接続されている場合は、Windows To Go ワークスペースの自動開始が試行されます。ユーザーは、[Windows To Go スタートアップ オプション] を使ってこの動作を変更することができません。このポリシー設定を無効にした場合、ユーザーがファームウェアでオプションを手動構成しない限り、USB ドライブが接続されていても Windows To Go の起動は実行されません。このポリシー設定を構成しない場合、Administrators グループのメンバーであるユーザーは、[Windows To Go スタートアップ オプション] を使って USB ドライブからの起動を有効または無効にすることができます。

これで、ホスト コンピューターを起動する前に挿入されている場合は Windows To Go ワークスペースを直接起動できるようになりました。必要に応じて、Windows To Go ワークスペースでオフライン ドメイン参加の構成Windows To Go ドライブで BitLocker 保護の有効化を実行できます。

Windows To Go ワークスペースの起動

USB から起動するようにホスト PC を構成した後は、次の手順を使って、Windows To Go ワークスペースを起動することができます。

Mt186418.wedge(ja-jp,VS.85).gifワークスペースを起動するには

  1. ホスト PC がスリープ状態ではないことを確認します。コンピューターがスリープ状態の場合は、シャットダウンするか休止状態にします。

  2. Windows To Go USB ドライブを PC の USB 3.0 または USB 2.0 ポートに直接挿入します。USB ハブまたは延長ケーブルを使わないでください。

  3. PC の電源を入れます。Windows To Go ドライブが BitLocker によって保護されている場合は、パスワードを入力するように求められます。それ以外の場合は、Windows To Go ワークスペースが直接起動します。

高度な展開の手順

次の手順は、Windows To Go ドライブの構成を詳細に制御したり、組織のリソースへのリモート アクセス用に正しく構成されていることを確認したり、BitLocker ドライブ暗号化で保護されていることを確認したりする、より高度な展開に使われます。

リモート アクセス用の Windows To Go ワークスペースの構成

Windows To Go ワークスペースが社外で使うときに効果的であると確認することは、展開を成功させるうえで不可欠です。Windows To Go の主な利点の 1 つは、ユーザーが企業ネットワークの外部にある管理対象外のコンピューターで、企業の管理対象ドメインに参加したワークスペースを使うことができるという点です。この使用方法を有効にするには、通常は基本的な展開の手順で説明するように USB ドライブをプロビジョニングしてから、ワークスペースのドメイン参加、すべての基幹業務アプリケーションのインストール、選択したリモート接続ソリューション (仮想プライベート ネットワーク クライアントや DirectAccess) の構成などをサポートするための構成を追加します。これらの構成が実行されると、ユーザーは社外にあるコンピューターを使ってワークスペースから作業できます。次の手順では、企業ネットワークに物理的にアクセスできない従業員向けにドメイン参加した Windows To Go ワークスペースをプロビジョニングすることができます。

リモート アクセス シナリオのための前提条件

  • Windows 8 以降を実行していて、Windows To Go ホスト コンピューターとして構成されているドメイン参加コンピューター

  • 無人設定を使って起動したりドメインに参加したりしていない Windows To Go ドライブ

  • コンピューターをドメインに追加する権限を持ち、Windows To Go ホスト コンピューターの Administrator グループのメンバーであるドメイン ユーザー アカウント

  • ドメインで構成された DirectAccess

Mt186418.wedge(ja-jp,VS.85).gifリモート アクセス用に Windows To Go ワークスペースを構成するには

  1. ホスト コンピューターを起動して、ドメインにワークステーションを追加する権限を持つユーザー アカウントでサインインし、管理者特権のコマンド プロンプトから次のコマンドを実行します。例に示すプレースホルダー パラメーター (<> で表されます) は環境に適したパラメーターで置き換えてください。

    djoin /provision /domain <exampledomain.com> /machine <examplewindowstogo_workspace_name> /certtemplate <WorkstationAuthentication_template> /policynames <DirectAccess Client Policy: {GUID}> /savefile <C:\example\path\domainmetadatafile> /reuse   
    

      

    /certtemplate パラメーターは DirectAccess の証明書を配布するための証明書テンプレートの使用をサポートしています。組織で証明書テンプレートを使わない場合は、このパラメーターを省略できます。さらに、Windows Server 2008 ベースのドメイン コント ローラーで djoin.exe を使う場合は、プロビジョニング時に /downlevel スイッチを追加します。詳しくは、オフライン ドメイン参加のステップ バイ ステップ ガイドをご覧ください。

     

  2. Windows To Go ドライブを挿入します。

  3. タスク バーの Windows PowerShell のショートカットを右クリックし、[管理者として実行] をクリックして、管理者特権で Windows PowerShell プロンプトを起動します。

  4. Windows PowerShell コマンド プロンプトで、次のコマンドを実行します。

    # The following command will set $Disk to all USB drives with >20 GB of storage
    
    $Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }
    
    #Clear the disk. This will delete any data on the disk. (and will fail if the disk is not yet initialized. If that happens, simply continue with ‘New-Partition…) Validate that this is the correct disk that you want to completely erase.
    # To skip the confirmation prompt, append –confirm:$False
    Clear-Disk –InputObject $Disk[0] -RemoveData 
    
    # This command initializes a new MBR disk 
    Initialize-Disk –InputObject $Disk[0] -PartitionStyle MBR
    
    # This command creates a 350 MB system partition
    $SystemPartition = New-Partition –InputObject $Disk[0] -Size (350MB) -IsActive 
    
    # This formats the volume with a FAT32 Filesystem
    # To skip the confirmation dialog, append –Confirm:$False
    Format-Volume -NewFileSystemLabel "UFD-System" -FileSystem FAT32 `
    -Partition $SystemPartition
    
    # This command creates the Windows volume using the maximum space available on the drive. The Windows To Go drive should not be used for other file storage.
    $OSPartition = New-Partition –InputObject $Disk[0] -UseMaximumSize
    Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS `
    -Partition $OSPartition
    
    # This command assigns drive letters to the new drive, the drive letters chosen should not already be in use.
    Set-Partition -InputObject $SystemPartition -NewDriveLetter "S"
    Set-Partition -InputObject $OSPartition -NewDriveLetter "W"
    
    # This command toggles the NODEFAULTDRIVELETTER flag on the partition which prevents drive letters being assigned to either partition when inserted into a different computer.
    Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE
    
  5. 次に、ディスク上に作成したオペレーティング システム パーティションに対して、Windows To Go で使うオペレーティング システム イメージを適用する必要があります (イメージのサイズと USB 接続の速度によっては 30 分以上かかることがあります)。次のコマンドは、展開イメージのサービスと管理コマンド ライン ツール (DISM) を使って行う方法を示しています。

    ヒント  

    .WIM ファイルで有効な Enterprise イメージにインデックス番号を正しく設定する必要があります。

     

    #The WIM file must contain a sysprep generalized image.
    dism /apply-image /imagefile:n:\imagefolder\deploymentimages\mywtgimage.wim /index:1 /applydir:W:\ 
    
  6. これらのコマンドが完了したら、次のコマンドを実行します。

    djoin /requestodj /loadfile C:\example\path\domainmetadatafile /windowspath W:\Windows   
    
  7. 次に、unattend.xml ファイルを編集して、最初の実行 (OOBE) の設定を構成する必要があります。この例では、マイクロソフト ソフトウェア ライセンス条項 (EULA) のページを非表示にし、重要と推奨される更新プログラムが自動的にインストールされるように自動更新を構成し、このワークスペースをプライベートなオフィス ネットワークの一部として識別します。必要に応じて組織向けに構成したその他の OOBE 設定を使うことができます。OOBE 設定について詳しくは、OOBE に関するページをご覧ください。

    <?xml version="1.0" encoding="utf-8"?>
    <unattend xmlns="urn:schemas-microsoft-com:unattend">
        <settings pass="oobeSystem">
            <component name="Microsoft-Windows-WinRE-RecoveryAgent"
              processorArchitecture="x86"
              publicKeyToken="31bf3856ad364e35" language="neutral" 
              versionScope="nonSxS"
              xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" 
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
               <UninstallWindowsRE>true</UninstallWindowsRE>
               <OOBE>
                  <HideEULAPage>true</HideEULAPage>
                  <ProtectYourPC>1</ProtectYourPC>
                  <NetworkLocation>Work</NetworkLocation>
                </OOBE>
             </component>
           <component name="Microsoft-Windows-WinRE-RecoveryAgent"
              processorArchitecture="amd64"
              publicKeyToken="31bf3856ad364e35" language="neutral" 
              versionScope="nonSxS"
              xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" 
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
               <UninstallWindowsRE>true</UninstallWindowsRE>
               <OOBE>
                  <HideEULAPage>true</HideEULAPage>
                  <ProtectYourPC>1</ProtectYourPC>
                  <NetworkLocation>Work</NetworkLocation>
               </OOBE>
    </component>
        </settings>  
    </unattend>
    
  8. Windows To Go ドライブを安全に取り外します。

  9. 社内または社外のホスト コンピューターから、コンピューターを起動し、Windows To Go ワークスペースを起動します。

    1. 社内で直接ネットワーク接続でホスト コンピューターを使っている場合は、ドメイン資格情報を使ってサインインします。

    2. 社外の場合は、インターネット アクセスでワイヤード (有線) またはワイヤレス ネットワークに参加してから、ドメイン資格情報を使ってもう一度サインオンします。

      

    DirectAccess の構成によっては、ドメインにログオンするためにスマート カードの挿入を求められる場合があります。

     

これで、組織のネットワーク リソースにアクセスし、社内で標準のデスクトップ コンピューターから普段作業する場合と同様に Windows To Go ワークスペースから作業できます。

Windows To Go ドライブの BitLocker 保護の有効化

Windows To Go ドライブで BitLocker を有効にすると、データを不正な使用から保護できます。また、Windows To Go ドライブを紛失したり盗まれたりした場合に、不正なユーザーが機密データを取得したりワークスペースを使って保護されたリソースにアクセスしたりすることが簡単ではなくなります。BitLocker を有効にした場合は、Windows To Go ドライブを起動するたびに、BitLocker パスワードを入力してドライブのロックを解除するように求められます。Windows To Go ドライブで BitLocker を有効にするための手順を次に示します。

BitLocker の有効化シナリオの前提条件

  • 正常にプロビジョニングできる Windows To Go ドライブ

  • Windows 8 を実行していて、Windows To Go ホスト コンピューターとして構成されているコンピューター

  • BitLocker ドライブ暗号化に関する次のグループ ポリシー設定を確認し、必要に応じて構成を変更します。

    \Windows コンポーネント\BitLocker ドライブ暗号化\オペレーティング システムのドライブ\スタートアップ時に追加の認証を要求する。 このポリシーは、オペレーティング システム ドライブのパスワード キー保護機能を許可します。Windows To Go ワークスペース内から BitLocker を構成するには、このポリシーが有効である必要があります。このポリシー設定を使うと、コンピューターを起動するたびに BitLocker で追加の認証を要求するかどうかと、BitLocker をトラステッド プラットフォーム モジュール (TPM) と併用するかどうかを構成できます。この設定を有効にし、[互換性のある TPM が装備されていない BitLocker を許可する] チェック ボックスをオンにし、[オペレーティング システム ドライブのパスワードの使用を構成する] 設定を有効にする必要があります。

    \Windows コンポーネント\BitLocker ドライブ暗号化\オペレーティング システムのドライブ\オペレーティング システム ドライブのパスワードの使用を構成する。このポリシー設定は、BitLocker で保護されたオペレーティング システム ドライブのロックを解除するためにパスワードを使うことができるようにし、Windows To Go ワークスペースのパスワードに関する複雑さと長さの要件を構成するための手段を提供します。複雑さの要件の設定を有効にするには、コンピューターの構成\Windows の設定\セキュリティの設定\アカウント ポリシー\パスワードのポリシーにある [複雑さの要件を満たす必要があるパスワード] グループ ポリシー設定も有効にする必要があります。

    \Windows コンポーネント\BitLocker ドライブ暗号化\オペレーティング システムのドライブ\スレートでプリブート キーボード入力が必要な BitLocker 認証を使用できるようにする。このポリシー設定を使うと、プラットフォームにプリブート入力機能がない場合でもプリブート環境からのユーザー入力を要求する認証オプションを有効にできるようになります。このポリシー設定を有効にしない場合、BitLocker で保護されているオペレーティング システム ドライブのロックを解除するときにパスワードを使うことができません。

プロビジョニング プロセスの一部としてユーザーに配布する前に Windows To Go ドライブの BitLocker 保護を有効にすることも、エンド ユーザーがドライブの所有権を得てから BitLocker 保護を適用できるようにすることもできます。どちらのシナリオについても、詳しい手順が用意されています。

プロビジョニング中に BitLocker を有効にすると、オペレーティング システム イメージは常に BitLocker で保護されます。プロビジョニング プロセス中に BitLocker を有効にした場合は、ディスクを構成した後、イメージを適用する直前に BitLocker を有効にすることで、ドライブを暗号化するために必要な時間を大幅に削減できます。この方法を使う場合は、ユーザーに Windows To Go ワークスペースを付与するときに、BitLocker パスワードを提供する必要があります。また、できるだけ早くワークスペースを起動して BitLocker パスワードを変更するようにユーザーに指示する必要があります (これは標準のユーザー権限で実行できます)。

配布後に BitLocker を有効にするには、ユーザーが BitLocker を有効にする必要があります。これは、ユーザーが BitLocker を有効にするまで Windows To Go ワークスペースが保護されないということです。 BitLocker を有効にするには、Windows To Go ワークスペースの管理者権限が必要です。BitLocker について詳しくは、BitLocker の概要に関するページをご覧ください。

BitLocker 回復キー

BitLocker 回復キーは、標準のロック解除方法が失敗した場合に、BitLocker 保護ドライブのロックを解除するために使うことができるキーです。BitLocker 回復キーを Active Directory ドメイン サービス (AD DS) にバックアップすることをお勧めします。回復キーの保管に AD DS を使わない場合は、回復キーをファイルに保存したり印刷したりできます。BitLocker 回復キーの管理方法は、BitLocker を有効にしたタイミングによって異なります。

  • プロビジョニング中に BitLocker 保護を有効にした場合、BitLocker 回復キーは、ドライブのプロビジョニングに使うコンピューターのコンピューター アカウントに保存されます。AD DS に回復キーをバックアップしない場合、回復キーは、ドライブごとに印刷するかファイルに保存する必要があります。IT 管理者は、どのキーがどの Windows To Go ドライブに割り当てられたのかを追跡する必要があります。

  • 警告  

    配布した後に BitLocker を有効にした場合、回復キーは、AD DS でワークスペースのコンピューター アカウントにバックアップされます。AD DS に回復キーをバックアップしない場合は、ユーザーが回復キーを印刷したりファイルに保存したりできます。IT 管理者が回復キーを一元的に記録する場合、ユーザーがキーを IT 部門に提供するプロセスが必要です。

     

Mt186418.wedge(ja-jp,VS.85).gifプロビジョニング中に BitLocker を有効にするには

  1. Windows 8 を実行しているホスト コンピューターを起動します。

  2. Windows To Go ドライブを挿入します。

  3. タスク バーの Windows PowerShell のショートカットを右クリックし、[管理者として実行] をクリックして、管理者特権で Windows PowerShell プロンプトを起動します。

  4. 次のコマンドレットを使って、Windows To Go ドライブをプロビジョニングします。

      

    ワークスペースを作成するために手動の方法を使った場合、Windows To Go ドライブが既にプロビジョニングされている必要があります。その場合は、次の手順に進むことができます。

     

    # The following command will set $Disk to all USB drives with >20 GB of storage
    
    $Disk = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }
    
    #Clear the disk. This will delete any data on the disk. (and will fail if the disk is not yet initialized. If that happens, simply continue with ‘New-Partition…) Validate that this is the correct disk that you want to completely erase.
    # To skip the confirmation prompt, append –confirm:$False
    Clear-Disk –InputObject $Disk[0] -RemoveData 
    
    # This command initializes a new MBR disk 
    Initialize-Disk –InputObject $Disk[0] -PartitionStyle MBR
    
    # This command creates a 350 MB system partition
    $SystemPartition = New-Partition –InputObject $Disk[0] -Size (350MB) -IsActive 
    
    # This formats the volume with a FAT32 Filesystem
    # To skip the confirmation dialog, append –Confirm:$False
    Format-Volume -NewFileSystemLabel "UFD-System" -FileSystem FAT32 `
    -Partition $SystemPartition
    
    # This command creates the Windows volume using the maximum space available on the drive. The Windows To Go drive should not be used for other file storage.
    $OSPartition = New-Partition –InputObject $Disk[0] -UseMaximumSize
    Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS `
    -Partition $OSPartition
    
    # This command assigns drive letters to the new drive, the drive letters chosen should not already be in use.
    Set-Partition -InputObject $SystemPartition -NewDriveLetter "S"
    Set-Partition -InputObject $OSPartition -NewDriveLetter "W"
    
    # This command toggles the NODEFAULTDRIVELETTER flag on the partition which prevents drive letters being assigned to either partition when inserted into a different computer.
    Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE
    

    次に、ディスク上に作成したオペレーティング システム パーティションに対して、Windows To Go で使うオペレーティング システム イメージを適用する必要があります (イメージのサイズと USB 接続の速度によっては 30 分以上かかることがあります)。次のコマンドは、展開イメージのサービスと管理コマンド ライン ツール (DISM) を使って行う方法を示しています。

    ヒント  

    .WIM ファイルで有効な Enterprise イメージにインデックス番号を正しく設定する必要があります。

     

    #The WIM file must contain a sysprep generalized image.
    dism /apply-image /imagefile:n:\imagefolder\deploymentimages\mywtgimage.wim /index:1 /applydir:W:\ 
    
  5. 同じ PowerShell セッションで、次のコマンドレットを使って、ドライブに回復キーを追加します。

    $BitlockerRecoveryProtector = Add-BitLockerKeyProtector W: -RecoveryPasswordProtector
    
  6. 次に、次のコマンドレットを使って、回復キーをファイルに保存します。

    #The BitLocker Recovery key is essential if for some reason you forget the BitLocker password
    #This recovery key can also be backed up into Active Directory using manage-bde.exe or the
    #PowerShell cmdlet Backup-BitLockerKeyProtector.
    $RecoveryPassword = $BitlockerRecoveryProtector.KeyProtector.RecoveryPassword
    $RecoveryPassword > WTG-Demo_Bitlocker_Recovery_Password.txt
    
  7. 次に、次のコマンドレットを使って、パスワードをセキュリティで保護された文字列として追加します。パスワードを省略した場合、操作を続行する前にパスワードの入力を求められます。

    # Create a variable to store the password
    $spwd = ConvertTo-SecureString -String <password> -AsplainText –Force 
    Enable-BitLocker W: -PasswordProtector $spwd 
    

    警告  

    BitLocker のみがディスク上の使用領域を暗号化できるようにするには、パラメーター –UsedSpaceOnlyEnable-BitLocker コマンドレットに追加します。データがドライブに追加されると、BitLocker によって追加の領域が暗号化されます。このパラメーターを使うと、暗号化の必要なディスクの割合が小さくなるため、準備処理が迅速化します。暗号化が完了するまで待てないような時間の厳しい状況では、暗号化処理中に Windows To Go ドライブを安全に取り外すこともできます。コンピューターにドライブを次回挿入したときに、BitLocker パスワードが要求されます。パスワードを指定すると、暗号化処理が続行されます。これを行う場合は、BitLocker 暗号化がまだ処理中であること、暗号化がバック グラウンドで実行中でもワークスペースを使用できることをユーザーが理解していることを確認してください。

     

  8. 数字の回復パスワードをコピーし、安全な場所のファイルに保存します。パスワードを紛失したり忘れた場合は、回復パスワードが必要になります。

    警告  

    Active Directory ドメイン サービスに回復情報をバックアップするように [BitLocker で保護されているリムーバブル ドライブの回復方法を選択する] グループ ポリシー設定が構成されている場合、ドライブの回復情報は、回復キーを適用するために使うホスト コンピューターのアカウントに保存されます。

    Windows To Go ワークスペースのアカウントに回復情報が保存されるようにする場合は、「配布後に BitLocker を有効にするには」の説明に従い [BitLocker] コントロール パネル項目から BitLocker セットアップ ウィザードを使って、Windows To Go ワークスペース内から BitLocker をオンにすることができます。

     

  9. Windows To Go ドライブを安全に取り外します。

Windows To Go ドライブは、ユーザーに配布する準備が整い、BitLocker で保護されています。ドライブを配布する場合は、ユーザーが次の情報を把握していることを確認します。

  • ドライブを起動するために必要な初期 BitLocker パスワード。

  • 暗号化の現在の状態。

  • 初回起動後に BitLocker パスワードを変更する手順。

  • 必要に応じて、回復パスワードを取得する方法に関する手順。ヘルプ デスクの処理、パスワードの自動取得サイト、問い合わせ先担当者などです。

Mt186418.wedge(ja-jp,VS.85).gif配布後に BitLocker を有効にするには

  1. Windows To Go ドライブをシャットダウン中のホスト コンピューターに挿入してから、コンピューターを起動し、Windows To Go ワークスペースを起動します。

  2. Windows logo key+W を押して、[検索の設定] を開き、「BitLocker」と入力して、BitLocker ドライブ暗号化の項目を選択します。

  3. ワークスペース上のドライブが表示されたら、C: ドライブについて [BitLocker をオンにする] をクリックします。BitLocker セットアップ ウィザードが表示されます。

  4. BitLocker セットアップ ウィザードのパスワード保護オプションを選択する手順を完了します。

  

グループ ポリシー設定 \Windows コンポーネント\BitLocker ドライブ暗号化\オペレーティング システムのドライブ\スタートアップ時に追加の認証を要求する[互換性のある TPM が装備されていない BitLocker を許可する] を指定するように構成していない場合、Windows To Go ワークスペース内から BitLocker を有効にすることはできません。

 

高度な展開のサンプル スクリプト

次のサンプル スクリプトでは、複数の Windows To Go ドライブのプロビジョニングと、オフライン ドメイン参加の構成をサポートします。

サンプル スクリプトでは、展開プロセスを効率化できるように無人セットアップ ファイルを作成します。そのため、Windows To Go ドライブの初回使用時に、起動前に追加の構成情報をエンド ユーザーに要求しません。

高度な展開のサンプル スクリプトを実行するための前提条件

  • 次のサンプル スクリプトを実行するには、ドメイン アカウントを作成するアクセス許可を持つアカウントを使い、ドメインに参加しているコンピューターから管理者として Windows PowerShell セッションを開く必要があります。

  • このスクリプトではローカル管理者のユーザー アカウントを作成しないため、オフライン ドメイン参加を使う必要があります。ただし、ドメイン メンバーシップによって、"Domain admins" がローカルの Administrators グループに自動的に配置されます。ドメイン ポリシーを確認します。DirectAccess を使っている場合は、policynames パラメーター、そして場合によっては certtemplate パラメーターを含むように、djoin.exe コマンドを変更する必要があります。

  • このスクリプトではドライブ文字を使う必要があるため、プロビジョニングできるのは未使用のドライブ文字の半分だけです。

高度な展開のサンプル スクリプトを実行するには

  1. 「Windows To Go 複数ドライブのプロビジョニングのサンプル スクリプト」という名前のコード サンプル全体を PowerShell スクリプト (.ps1) ファイルにコピーします。

  2. 展開するうえで適切になるように必要な変更を加え、ファイルを保存します。

  3. PowerShell 実行ポリシーを構成します。既定では、PowerShell の実行ポリシーは [Restricted] (制限付き) に設定されます。つまり、明示的にアクセス許可を指定しない限り、スクリプトは実行されません。スクリプトの実行を許可するように PowerShell の実行ポリシーを構成するには、管理者特権の PowerShell プロンプトから次のコマンドを使います。

    Set-ExecutionPolicy RemoteSigned
    

    RemoteSigned 実行ポリシーは、インターネットから取得した署名されていないスクリプトがコンピューター上で実行されることを禁止しますが、ローカルで作成されたスクリプトの実行は許可します。実行ポリシーについて詳しくは、Set-ExecutionPolicy に関するページをご覧ください。

    ヒント  

    ローカルにインストールされているかどうかに関係なく Windows PowerShell コマンドレットのオンライン ヘルプを参照するには、次のコマンドレットを入力してください (<cmdlet-name> はヘルプを表示するコマンドレットの名前に置き換えてください)。

    Get-Help <cmdlet-name> -Online

    ヘルプ トピックのオンライン バージョンが既定のインターネット ブラウザーで開きます。

     

Windows To Go 複数ドライブのプロビジョニングのサンプル スクリプト

<#
.SYNOPSIS
Windows To Go multiple drive provisioning sample script.

.DESCRIPTION
This sample script will provision one or more Windows To Go drives, configure offline domain join (using random machine names) and provides an option for BitLocker encryption. To provide a seamless first boot experience, an unattend file is created that will set the first run (OOBE) settings to defaults. To improve performance of the script, copy your install image to a local location on the computer used for provisioning the drives.

.EXAMPLE
.\WTG_MultiProvision.ps1 -InstallWIMPath c:\companyImages\amd64_enterprise.wim
provision drives connected to your machine with the provided image.
#>
param (
    [parameter(Mandatory=$true)]
    [string]
    #Path to install wim.  If you have the full path to the wim or want to use a local file.
    $InstallWIMPath,

    [string]
    #Domain to which to join the Windows To Go workspaces.
    $DomainName
)


<#
  In order to set BitLocker Group Policies for our offline WTG image we need to create a Registry.pol file
  in the System32\GroupPolicy folder. This file requires binary editing, which is not possible in PowerShell
  directly so we have some C# code that we can use to add a type in our PowerShell instance that will write
  the data for us.
#>
$Source = @"
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

namespace MS.PolicyFileEditor
{
    //The PolicyEntry represents the DWORD Registry Key/Value/Data entry that will
    //be written into the file.
    public class PolicyEntry
    {
        private List<byte> byteList;

        public string KeyName { get; set; }
        public string ValueName { get; set; }

        internal List<byte> DataBytes
        {
            get { return this.byteList; }
        }

        public PolicyEntry(
            string Key,
            string Value,
            uint data)
        {
            KeyName = Key;
            ValueName = Value;
            this.byteList = new List<byte>();
            byte[] arrBytes = BitConverter.GetBytes(data);
            if (BitConverter.IsLittleEndian == false) { Array.Reverse(arrBytes); }
            this.byteList.AddRange(arrBytes);
        }

        ~PolicyEntry()
        {
            this.byteList = null;
        }
    }

    public class PolicyFile
    {
        private Dictionary<string, PolicyEntry> entries;

        public List<PolicyEntry> Entries
        {
            get
            {
                List<PolicyEntry> policyList = new List<PolicyEntry>(entries.Values);
                return policyList;
            }
        }

        public PolicyFile()
        {
            this.entries = new Dictionary<string, PolicyEntry>(StringComparer.OrdinalIgnoreCase);
        }

        public void SetDWORDValue(string key, string value, uint data)
        {
            PolicyEntry entry = new PolicyEntry(key, value, data);
            this.entries[entry.KeyName + "\\" + entry.ValueName] = entry;
        }

        public void SaveFile(string file)
        {
            using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write))
            {
                fs.Write(new byte[] { 0x50, 0x52, 0x65, 0x67, 0x01, 0x00, 0x00, 0x00 }, 0, 8);
                byte[] openBracket = UnicodeEncoding.Unicode.GetBytes("[");
                byte[] closeBracket = UnicodeEncoding.Unicode.GetBytes("]");
                byte[] semicolon = UnicodeEncoding.Unicode.GetBytes(";");
                byte[] nullChar = new byte[] { 0, 0 };

                byte[] bytes;

                foreach (PolicyEntry entry in this.Entries)
                {
                    fs.Write(openBracket, 0, 2);
                    bytes = UnicodeEncoding.Unicode.GetBytes(entry.KeyName);
                    fs.Write(bytes, 0, bytes.Length);
                    fs.Write(nullChar, 0, 2);

                    fs.Write(semicolon, 0, 2);
                    bytes = UnicodeEncoding.Unicode.GetBytes(entry.ValueName);
                    fs.Write(bytes, 0, bytes.Length);
                    fs.Write(nullChar, 0, 2);

                    fs.Write(semicolon, 0, 2);
                    bytes = BitConverter.GetBytes(4);
                    if (BitConverter.IsLittleEndian == false) { Array.Reverse(bytes); }
                    fs.Write(bytes, 0, 4);

                    fs.Write(semicolon, 0, 2);
                    byte[] data = entry.DataBytes.ToArray();
                    bytes = BitConverter.GetBytes((uint)data.Length);
                    if (BitConverter.IsLittleEndian == false) { Array.Reverse(bytes); }
                    fs.Write(bytes, 0, 4);

                    fs.Write(semicolon, 0, 2);
                    fs.Write(data, 0, data.Length);
                    fs.Write(closeBracket, 0, 2);
                }
                fs.Close();
            }
        }
    }
}
"@

########################################################################
# Helper Functions
Function CreateUnattendFile {
param (
    [parameter(Mandatory=$true)]
    [string]
    $Arch
)

    if ( Test-Path "WtgUnattend.xml" ) {
      del .\WtgUnattend.xml
    }
    $unattendFile = New-Item "WtgUnattend.xml" -type File
    $fileContent = @"
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-Shell-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="$Arch" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <ProtectYourPC>1</ProtectYourPC>
                <NetworkLocation>Work</NetworkLocation>
            </OOBE>
        </component>
        <component name="Microsoft-Windows-International-Core" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="$Arch">
          <InputLocale>en-US</InputLocale>
          <SystemLocale>en-US</SystemLocale>
          <UILanguage>en-US</UILanguage>
          <UserLocale>en-US</UserLocale>
        </component>
        <component name="Microsoft-Windows-WinRE-RecoveryAgent" processorArchitecture="$Arch" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <UninstallWindowsRE>true</UninstallWindowsRE>
        </component>
    </settings>
</unattend>
"@

    Set-Content $unattendFile $fileContent

    #return the file object
    $unattendFile 
}

Function CreateRegistryPolicyFile {

    $saveFileLocaiton = "" + (get-location) + "\registry.pol"

    $policyFile = New-Object MS.PolicyFileEditor.PolicyFile 
    $policyFile.SetDWORDValue("Software\Policies\Microsoft\FVE", "UseAdvancedStartup", 1)
    $policyFile.SetDWORDValue("Software\Policies\Microsoft\FVE", "EnableBDEWithNoTPM", 1)
    $policyFile.SetDWORDValue("Software\Policies\Microsoft\FVE", "UseTPM", 2)
    $policyFile.SetDWORDValue("Software\Policies\Microsoft\FVE", "UseTPMPIN", 2)
    $policyFile.SetDWORDValue("Software\Policies\Microsoft\FVE", "UseTPMKey", 2)
    $policyFile.SetDWORDValue("Software\Policies\Microsoft\FVE", "UseTPMKeyPIN", 2)
    $policyFile.SetDWORDValue("Software\Policies\Microsoft\FVE", "OSEnablePrebootInputProtectorsOnSlates", 1)
    $policyFile.SaveFile($saveFileLocaiton) 

    $saveFileLocaiton
}

########################################################################

if ( Test-Path $installWIMPath ){
  write-output "Image: $installWIMPath"
}
else{
  write-output "Unable to find image: $installWIMPath" "Exiting the script"
  exit
}

if ( (Get-WindowsImage -ImagePath $InstallWIMPath -Index 1).Architecture -eq 0 ){
    $Arch = "x86"
}
else{
    $Arch = "amd64"
}

$starttime = get-date

#Add type information for modifing the Registy Policy file
Add-Type -TypeDefinition $Source -Language CSharp  

#Create helper files
$unattendFile = CreateUnattendFile -Arch $Arch
$registryPolFilePath = CreateRegistryPolicyFile

$Disks = Get-Disk | Where-Object {$_.Path -match "USBSTOR" -and $_.Size -gt 20Gb -and -not $_.IsBoot }
if ($Disks -eq $null)
{
    Write-Output "No USB Disks found, exiting the script.  Please check that you have a device connected."
    exit
}

#We want to make sure that all non-boot connected USB drives are online, writeable and cleaned.
#This command will erase all data from all USB drives larger than 20Gb connected to your machine
#To automate this step you can add: -confirm:$False
Clear-Disk –InputObject $Disks -RemoveData -erroraction SilentlyContinue

# Currently the provisioning script needs drive letters (for dism and bcdboot.exe) and the script is more
# reliable when the main process determines all of the free drives and provides them to the sub-processes.
# Use a drive index starting at 1, since we need 2 free drives to proceed. (system & operating system)
$driveLetters =    68..90 | ForEach-Object { "$([char]$_):" } |
    Where-Object {
        (new-object System.IO.DriveInfo $_).DriveType -eq 'noRootdirectory'
    }
$driveIndex = 1

foreach ($disk in $Disks)
{

    if ( $driveIndex  -lt $driveLetters.count )
    {
        Start-Job -ScriptBlock {
            $installWIMPath = $args[0]
            $unattendFile = $args[1]
            $Disk = $args[2]
            $SystemDriveLetter = $args[3]
            $OSDriveLetter = $args[4]
            $DomainName = $args[5]
            $policyFilePath = $args[6]

            #For compatibility between UEFI and legacy BIOS we use MBR for the disk.
            Initialize-Disk –InputObject $Disk -PartitionStyle MBR

            #A short sleep between creating a new partition and formatting helps ensure the partition
            #is ready before formatting.
            $SystemPartition = New-Partition –InputObject $Disk -Size (350MB) -IsActive
            Sleep 1
            Format-Volume -Partition $SystemPartition -FileSystem FAT32 -NewFileSystemLabel "UFD-System" -confirm:$False | Out-Null

            $OSPartition = New-Partition –InputObject $Disk -UseMaximumSize
            Sleep 1
            Format-Volume -NewFileSystemLabel "UFD-Windows" -FileSystem NTFS -Partition $OSPartition -confirm:$False | Out-Null


            #The No default drive letter prevents other computers from displaying contents of the drive when connected as a Data drive.    
            Set-Partition -InputObject $OSPartition -NoDefaultDriveLetter $TRUE
            Set-Partition -InputObject $SystemPartition -NewDriveLetter $SystemDriveLetter 
            Set-Partition -InputObject $OSPartition -NewDriveLetter $OSDriveLetter 

            dism /apply-image /index:1 /applydir:${OSDriveLetter}:\ /imagefile:$InstallWIMPath
            if (!$?){
                write-output "DISM image application failed, exiting."
                exit
            }

            copy $unattendFile ${OSDriveLetter}:\Windows\System32\sysprep\unattend.xml

            #Create the directory for the Machine Registry Policy file, surpressing the output and any error
            #and copy the pre-created Registry.pol file to that location.
            write-output "Set BitLocker default policies for WindowsToGo"
            md ${OSDriveLetter}:\windows\System32\GroupPolicy\Machine | out-null
            copy $policyFilePath ${OSDriveLetter}:\windows\System32\GroupPolicy\Machine

            #modify the registry of the image to set SanPolicy.  This is also where you could set the default 
            #keyboard type for USB keyboards.
            write-output "Modify SAN Policy"
            reg load HKLM\PW-System ${OSDriveLetter}:\Windows\System32\config\SYSTEM > info.log
            reg add HKLM\PW-System\ControlSet001\Services\Partmgr\Parameters /v SanPolicy /d 4 /t REG_DWORD /f > info.log
            reg unload HKLM\PW-System > info.log

            #We're running bcdboot from the newly applied image so we know that the correct boot files for the architecture and operating system are used.
            #This will fail if we try to run an amd64 bcdboot.exe on x86.
            cmd /c "$OSDriveLetter`:\Windows\system32\bcdboot $OSDriveLetter`:\Windows /f ALL /s $SystemDriveLetter`:"
            if (!$?){
                write-output "BCDBOOT.exe failed, exiting script."
                exit
            }

            <#
               If a domain name was provided to the script, we will create a random computer name
               and perform an offline domain join for the device.  With this command we also supress the
               Add User OOBE screen.
            #>
            if ($DomainName)
            {
                #using get-random, we will create a random computer name for the drive. 
                $suffix = Get-Random
                $computername = "wtg-" + $suffix
                djoin /provision /domain $DomainName /savefile ${OSDriveLetter}:\tempBLOB.bin /reuse /machine $computername 
                djoin /requestodj /loadfile ${OSDriveLetter}:\tempBLOB.bin /windowspath  ${OSDriveLetter}:\windows > info.log
                del ${OSDriveLetter}:\tempBLOB.bin

                #add offline registry key to skip user account screen
                write-output "Add Offline Registry key for skipping UserAccount OOBE page."
                reg load HKLM\PW-Temp${OSDriveLetter}   ${OSDriveLetter}:\Windows\System32\config\SOFTWARE > info.log
                reg add HKLM\PW-Temp${OSDriveLetter}\Microsoft\Windows\CurrentVersion\Setup\OOBE /v UnattendCreatedUser /d 1 /t REG_DWORD > info.log
                reg unload HKLM\PW-Temp${OSDriveLetter} > info.log
            }

            try
            {
                Write-VolumeCache -DriveLetter ${OSDriveLetter}
                Write-Output "Disk is now ready to be removed."
            }
                catch [System.Management.Automation.CommandNotFoundException]
            {
                write-output "Flush Cache not supported, Be sure to safely remove the WTG device."
            }
 

       } -ArgumentList  @($installWIMPath, $unattendFile, $disk, $driveLetters[$driveIndex-1][0], $driveLetters[$driveIndex][0], $DomainName, $registryPolFilePath)
    }
    $driveIndex  = $driveIndex  + 2
}
#wait for all threads to finish
get-job | wait-job

#print output from all threads
get-job | receive-job

#delete the job objects
get-job | remove-job


#Cleanup helper files
del .\WtgUnattend.xml
del .\Registry.pol

$finishtime = get-date
$elapsedTime = new-timespan $starttime $finishtime
write-output "Provsioning completed in: $elapsedTime  (hh:mm:ss.000)"
write-output "" "Provisioning script complete."

Windows To Go で異なる USB キーボード レイアウトを使う場合の考慮事項

Windows To Go ドライブをプロビジョニングする前に、英語以外の USB キーボードが接続されているコンピューターでワークスペースを起動するかどうかを考慮する必要があります。KB article 927824 で説明するように、プラグ アンド プレイ ID が原因でキーボードが誤って英語 101 キー キーボードとして識別されるという既知の問題があります。この問題を回避するため、オーバーライドするキーボード パラメーターを設定するようにプロビジョニング スクリプトを変更できます。

PowerShell プロビジョニング スクリプトで、イメージが適用された後に、キーボード設定を正しく設定する次のコマンドを追加できます。 次の例では、日本語キーボード レイアウトを使います。

            reg load HKLM\WTG-Keyboard ${OSDriveLetter}:\Windows\System32\config\SYSTEM > info.log
            reg add HKLM\WTG-Keyboard\ControlSet001\Services\i8042prt\Parameters /v LayerDriver /d JPN:kbd106dll /t REG_SZ /f
            reg add HKLM\WTG-Keyboard\ControlSet001\Services\i8042prt\Parameters /v OverrideKeyboardIdentifier /d PCAT_106KEY /t REG_SZ /f 
            reg add HKLM\WTG-Keyboard\ControlSet001\Services\i8042prt\Parameters /v OverrideKeyboardSubtype /d 2 /t REG_DWORD /f
            reg add HKLM\WTG-Keyboard\ControlSet001\Services\i8042prt\Parameters /v OverrideKeyboardType /d 7 /t REG_DWORD /f 
            reg unload HKLM\WTG-Keyboard

関連トピック

Windows To Go: 機能概要

Windows 10 フォーラム

Windows To Go に向けた組織の準備

Windows To Go の展開に関する考慮事項

Windows To Go のセキュリティとデータ保護に関する考慮事項

BitLocker の概要