• Windows Server 2012 リモート デスクトップ環境の構成について

    2013/09/13 追記。


    こんにちは。Windows プラットフォーム サポートの横山です。

    本日は、Windows Server 2012 リモート デスクトップ環境の構成に関するコマンドをご紹介いたします。

    Windows Server 2012 リモート デスクトップ環境では、RDMS (Remote Desktop Management Service) を利用してリモート デスクトップ サービス関連の設定の変更を行います。

    しかしながら、RDMS は "リモート デスクトップ サービスのインストール" を使用してリモート デスクトップ サービスのインストールを行わない限り、インストールされません。
    また、"リモート デスクトップ サービスのインストール" は、非ドメイン環境では実行できず、ドメイン環境でのみ実行可能であり、ドメイン環境であってもドメイン コントローラー単一では、"リモート デスクトップ サービスのインストール" が実行できません。

    その為、ドメイン コントローラーや WORKGROUP 環境の Windows Server 2012 にリモート デスクトップ セッション ホストの各種設定を行うには、WMI コマンドの利用やレジストリの編集が必要です。

    ※ ドメイン コントローラーへの "リモート デスクトップ サービスのインストール" については、KB2871777 にて公開されている更新プログラムをインストールして再起動することにより、実行可能となります。

     

    今回は、PowerShell を利用したリモート デスクトップ セッション ホスト / リモート デスクトップ ライセンスのインストール、ライセンス サーバーの設定、また、RemoteApp の公開、RemoteApp 接続を行うための .rdp ファイルの作成方法についてお伝えいたします。

    - リモート デスクトップ セッション ホストのインストール
    1. [ツール] より、[Windows PowerShell] を起動します。

     

    2. [リモート デスクトップ セッション ホスト] 役割サービスをインストールします。
       > Add-WindowsFeature -Name RDS-RD-Server

    3. [デスクトップ エクスペリエンス] をインストールします。
       > Add-WindowsFeature -Name Desktop-Experience

    4. [ライセンス診断] ツールをインストールします。
       > Add-WindowsFeature -Name RSAT-RDS-Licensing-Diagnosis-UI

    5. システムの再起動を行います。

     

    - リモート デスクトップ ライセンスのインストール、ライセンス サーバーの設定
    1. [ツール] より、[Windows PowerShell] を起動します。

    2. [リモート デスクトップ ライセンス] の役割サービスをインストールします。
       > Add-WindowsFeature -Name RDS-Licensing

    3. [RD ライセンス マネージャー] をインストールします。
       > Add-WindowsFeature -Name RDS-Licensing-UI

    4. [リモート デスクトップ ライセンス モード] を変更します。
       > (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).ChangeMode(4)
       ※ 4 は [接続ユーザー数] モードです。[接続デバイス数] モードは 2 です。
      
    5. [リモート デスクトップ ライセンス サーバー] を指定します。
       > New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers -Value "<IP アドレス>" -PropertyType MultiString
    また、以下のコマンドを実行しても同様の処理が行えます。
       > (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).SetSpecifiedLicenseServerList("<IP アドレス>")
    コマンド例:
       > New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers -Value "192.168.0.1" -PropertyType MultiString
       > (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).SetSpecifiedLicenseServerList("192.168.0.1")

    6. 以下のコマンドで正常にライセンス サーバーが指定されていることを確認します。
       > Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers" -Name SpecifiedLicenseServers
       ※ 以下のコマンドを実行しても同様の処理が行えます。
       > (gwmi -Class Win32_TerminalServiceSetting -Namespace root\cimv2\TerminalServices).GetSpecifiedLicenseServerList()
     

    - RemoteApp の公開方法、RemoteApp 接続用の .rdp ファイルの作成方法
    1. 下記コマンドを実行し、RemoteApp として公開したいアプリケーションを登録します。
       ※ 以下は mspaint.exe を登録する手順です。
       > $regPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList\Applications"
       > New-Item $regPath -Name mspaint
       > New-ItemProperty $regPath\mspaint -Name CommandLineSetting -Value 0 -PropertyType Dword
       > New-ItemProperty $regPath\mspaint -Name Name -Value Paint -PropertyType String
       > New-ItemProperty $regPath\mspaint -Name Path -Value C:\Windows\System32\mspaint.exe -PropertyType String
       > New-ItemProperty $regPath\mspaint -Name RequiredCommandLine -PropertyType String
       > New-ItemProperty $regPath\mspaint -Name SecurityDescriptor -PropertyType String
       > New-ItemProperty $regPath\mspaint -Name ShowInTSWA -Value 1 -PropertyType Dword

    2. クライアントには下記内容を含む .rdp ファイルを配布します。
       =========================================
       redirectclipboard:i:1
       redirectposdevices:i:0
       redirectprinters:i:1
       redirectcomports:i:1
       redirectsmartcards:i:1
       devicestoredirect:s:*
       drivestoredirect:s:*
       redirectdrives:i:1
       session bpp:i:32
       prompt for credentials on client:i:1
       span monitors:i:1
       use multimon:i:1
       remoteapplicationmode:i:1
       server port:i:3389
       allow font smoothing:i:1
       promptcredentialonce:i:1
       authentication level:i:2
       gatewayusagemethod:i:2
       gatewayprofileusagemethod:i:0
       gatewaycredentialssource:i:0
       full address:s:<サーバー名もしくは IP アドレス>
       alternate shell:s:||mspaint <------------ レジストリ キー名
       remoteapplicationprogram:s:||mspaint <--- レジストリ キー名
       gatewayhostname:s:
       remoteapplicationname:s:Paint <---------- Name に記載のデータ
       remoteapplicationcmdline:s:
       =========================================
       ※ <------ とその後の文字列は削除してください。

      

    - 参考情報
    Win32_TerminalServiceSetting class (Windows)
    http://msdn.microsoft.com/en-us/library/windows/desktop/aa383640(v=vs.85).aspx

    Windows Server 2012 ドメイン コントローラーで "リモート デスクトップ サービスのインストール" ができない。
    http://support.microsoft.com/kb/2795837

    A servicing stack update is available for Windows RT, Windows 8, and Windows Server 2012: September 2013
    http://support.microsoft.com/kb/2871777 

     

  • Hyper-V のクラスター構成における、仮想マシンの設定変更における注意事項

    こんにちは。Windows プラットフォーム サポートの加藤です。

     

    本日は、Hyper-V のクラスター構成の環境で、仮想マシンの設定変更における注意事項についてお伝えします。

    通常、仮想マシンの設定変更は、Hyper-V マネージャーから実施しますが、クラスター環境では、フェールオーバー クラスター マネージャーから、設定を変更する必要があります。
    Hyper-V マネージャーから変更をした場合、変更後の情報がクラスターに伝わらず、Hyper-V の仮想マシンの保持する情報と、クラスターの仮想マシン構成リソースの情報に矛盾が発生し、以下のような事象が発生する場合があります。

     

    ・事象 1. クイック マイグレーションやライブ マイグレーションが失敗する。

    マイグレーション失敗時には、以下のようなエラーが記録されます。

     

    ソース:VMSMP
    イベント ID:32
    イベント種類:エラー
    イベント内容
    スイッチ '<スイッチ名>' のポート '<ポート名>' へ NIC '<NICのID>' を接続できませんでした。状態 = C000003A"

    ソース:Microsoft-Windows-Hyper-V-High-Availability
    イベント ID:21502
    イベント種類:エラー
    イベント内容
    '<仮想マシン名>' は開始できませんでした。  '<仮想マシン名>' は復元できませんでした。(仮想���シン ID  <仮想マシン ID>)  '<仮想マシン名>' Microsoft Synthetic Ethernet Port (インスタンス ID {<インスタンス ID>}): 復元できませんでした。エラー: '指定されたパスが見つかりません。' (0x80070003)。(仮想マシン ID <仮想マシン ID>)  '<仮想マシン名': 'ネットワーク アダプター' (ネットワーク アダプター ID) のスイッチ ポート接続が無効です。"

     

    上記のイベントは、Hyper-V の各仮想マシン上で保持している仮想スイッチの情報と、クラスターの仮想マシン リソース上で保持している仮想スイッチの情報に矛盾がある場合などに発生します。

    仮想マシンは移動先ノードで、接続先すべき仮想スイッチを探す際に、クラスターの仮想マシン リソースのレジストリに保存されたVmSwitchPorts の値を確認します。
    仮想マシンはここから得た情報をもとに、移動先ノードの仮想スイッチに接続を試みますが、Hyper-V の情報と、クラスターの情報が異なると接続ができず、エラーとなります。

     この現象は、Hyper-V マネージャーから設定をした場合に、仮想マシンの変更後の情報がクラスターへ反映されないために発生します。

     

    ・事象 2. 設定変更後、元の設定に戻ってしまう。

    この問題は、Hyper-V マネージャーから仮想マシンの設定を変更を実施した場合、マイグレーションを実行、もしくはクラスターの仮想マシン構成リソースのオンライン → オフラインを実行すると、変更前の状態に戻ってしまいます。
    仮想マシン構成リソースのオンライン時に、クラスターが保持する古い情報が、Hyper-V の仮想マシンの情報として、上書きされるため、この事象が発生します。

    仮想マシンの変更は、フェールオーバー クラスター マネージャーから、設定を変更することで、変更した情報は直ちにクラスターの仮想マシン リソースにも保存されるため、上記の問題を防ぐことが可能です。
    手順:
    当該の仮想マシンを右クリックし、[設定] を選択して変更画面を起動します。
    (または、右ペインから [設定] をクリックします。)

     

     また、万が一、Hyper-V マネージャーから設定を変更してしまった場合には、以下の手順を行うことで、情報の更新を行うことができます。

      1) フェールオーバー クラスター マネージャーを開きます。

      2) [サービスとアプリケーション] を展開し、仮想マシンの構成を変更した
         仮想マシンをクリックします。

      3) 中央に表示された仮想マシン リソースを右クリックします。

      4) メニューから [その他のアクション]->[仮想マシン構成を最新の状態に更新]
         を選択します。

     

    - 参考
    Windows Server 2008 でフェールオーバー クラスタのクイック マイグレーション構成後 仮想マシンの構成を変更して仮想マシン リソースを移動すると フェール オーバーに失敗する場合がある
    http://support.microsoft.com/kb/961782/ja

    ※ 上記 KB はWindows Server 2008 のクイック マイグレーションについての情報ですが、Windows Server 2008 R2 のライブ マイグレーションでも同様です。

    なお、Windows Server 2012 からは、クラスター化された仮想マシンの設定の一部は、Hyper-V マネージャーから変更ができなくなっているため、同様の問題は発生しません。

     

  • Windows 8 または Windows Server 2012 へ .NET Framework 3.5 をインストールする方法

    こんにちは。Windows プラットフォーム サポートの服部です。

    Windows 8 または Windows Server 2012 環境で、.NET Framework 3.5 をインストールする際の注意事項などをお伝えしたいと思います。
    以降、特に明記が無い限り「Windows 8」を適宜「Windows Server 2012」 に読み替えてください。

    まず、Windows 8 環境で、.NET Framework 3.5 をインストールするには、大きく 2 つの方法があります。

    1 つ目は、コントロール パネルで Windows の機能の有効化または無効化 を実行して .NET Framework 3.5 の有効化を実施する方法です。

    この場合のインストールには、Windows Update サイトに接続可能なインターネット環境が必要です。
    具体的な手順は以下のサイトをご参照ください。

    Windows 8 への .NET Framework 3.5 のインストール
    http://msdn.microsoft.com/ja-jp/library/vstudio/hh506443.aspx

    2 つ目は、Windows のインストール メディアを使用して .NET Framework 3.5 を有効にする方法です。
    インターネットにコンピューターを接続できない場合は、こちらの方法をご利用ください。
    具体的な手順は以下のサイトをご参照ください。

    Windows 8 または Windows Server 2012 に .NET Framework 3.5 をインストールしようとする際のエラー コード
    http://support.microsoft.com/kb/2734782/ja (機械翻訳)

    続いて、よくお問い合わせいただくご質問についてお伝えします。

    Windows 8 への .NET Framework 3.5 のインストールに関してよくいただく質問

    • Q1. Windows 8 でインターネット接続および Windows のインストール メディアが無い場合に.NET Framework 3.5 をインストールする方法はありますか?
      A1. ありません。 Windows 8 環境で.NET Framework 3.5 を有効化するには、インターネット接続またはWindows のインストール メディアが必要です。これ以外の方法はありません。
    • Q2. Windows インストール メディア内の "Sources\SxS" フォルダをソフトウェア側のインストーラー等に同梱して配布することはできますか?
      A2. 残念ながら、どのような形態であれ、Sources フォルダの再配布を行うことは許可されていません。
    • Q3. Windows 8 用の .NET Framework 3.5 再頒布パッケージをリリースする予定はありますか?
      A3. 現時点では Windows 8 用 .NET Framework 3.5 再頒布パッケージのリリース予定はありません。

    参考資料

  • Windows Server Backup からのリストア後に使用されるドライバについて

    Windows テクノロジー サポートの奥原です。
    今回は、Windows Server 2008 や Windows Server 2008 R2 環境のリストアとドライバについて、ご説明したいと思います。

    Windows PE や Windows RE (OS のセットアップメディアなど) からリストアを行う際に、ストレージデバイスや NIC のドライバを追加する場合があるかと思いますが、ドライバの追加に関して以下の注意点があります。

    ・Windows PE / Windows RE で使用するドライバについて
    ・リストア後に使用されるドライバについて

     

    Windows PE / Windows RE で使用するドライバについて
    ----------------------------------------------------
    Windows PE / Windows RE で、ドライバの追加を行っても該当デバイスが使用できない場合があります。
    この現象は、ドライバの追加 (ドライバのインストール) 処理によって、ドライバのロードは行われますが、該当のデバイスが Windows PE / Windows RE に対応していないため、インストール処理が実行されないことによって発生していることがあります。
    これは、Windows PE / Windows RE は、簡易 OS であるため、位置付けとしては、クライアント OS となり、使用しているドライバが、Windows Server OS 対応のドライバであっても、Windows PE / Windows RE (クライアント OS) に対応していない場合に発生します。
    つまり、Windows PE / Windows RE で、追加のドライバをインストールする際にクライアント OS に対応したドライバを用いる必要があります。

     

    リストア後に使用されるドライバについて
    ----------------------------------------------------
    Windows PE / Windows RE でのリストアの際、ドライバの追加は、よく行われますが、Windows PE / Windows REで追加したドライバがリストア後の OS に含まれることは、あまり知られておりません。
    この動作によって問題が発生することがあり、具体例を基にこの動作について説明します。

    バックアップからのリストアを行う際に、ディスクを認識させるため、Windows Server 未対応のストレージドライバをインストールし、ディスクを認識させる場合を考えます。
    その後、リストアを完了させ、OS を再起動させると起動しない現象が発生しました。

    この問題が発生する流れは以下の通りとなります。

    1. Windows PE / Windows RE で、Windows Server 未対応のストレージドライバを追加し、ストレージを認識させます。
    2. 認識されたストレージに対し、バックアップからのリストアを行います。
    3. 上記 1 で追加したドライバは、リストア後の OS の %WinDir%\System32\Drivers に格納されます。

        ※ここで、リストア後の OS にも追加したドライバが格納されます。

    4. OS 起動後、ドライバの更新処理によって、Windows Server 未対応のストレージドライバに差し替わります
    5. 差し替わったドライバではストレージデバイスが認識されないため OS が起動しない現象が発生します。

     

    今回は、ストレージデバイスのドライバを対象に上げさせていただきましたが、NIC デバイスなどのドライバでも同様にドライバが置き換わる現象が発生します。
    また、Windows Server 2008 R2 以降では、Windows RE で追加したドライバをリストア後に使用するかをレジストリによって決めることが可能でございます。
    このレジストリを設定することによって、上記 3 で、追加したドライバが、リストア後の OS に格納されなくなります。
    このため、OS 起動後のドライバの更新処理でも追加したドライバは存在しておらず、既存のドライバを使用するため、OS が起動しないといった現象は発生しません。

    レジストリ
    --------------------------
    レジストリパス:
    HKLM\SYSTEM\CurrentControlSet\Services\wbengine
    キー :
    DoNotInjectDrivers (DWORD)
    値 : 1 
    --------------------------

    このレジストリについては、Windows RE で起動後、コマンドプロンプトからレジストリエディタ (regedit.exe) を起動し設定します。このレジストリ設定後、リストア処理を行います。
    今回、2 点の注意事項について記載させて頂きましたが、これらの 2 点は関連性があり、1 点は、Windows PE / Windows RE で追加するドライバは、クライアント OS として対応しているドライバを用いる点。もう 1 点は、Windows PE /  Windows RE で追加したドライバは、リストア後の OS に格納される点。
    つまり、Windows PE / Windows RE からリストアを行う際に、追加するドライバは、クライアント OS および、サーバ OS 両方に対応している必要があるということになります。

     

  • 仮想ディスク サービス (VDS) について

    こんにちは。日本マイクロソフトの松岡です。
    今回は Windows OS に実装されている、仮想ディスク サービス (VDS) についてご紹介します。

     

    仮想ディスク サービス (VDS) について
    ===================================================
    VDS はディスクの構成、管理を行うための、統一されたインターフェイスを提供するためのサービスです。
    VDS は COM ベースの API を公開していますので、アプリケーションやスクリプトは COM インターフェイスを呼び出し、ディスクの作成やフォーマット、あるいはハードウェア RAID アダプターを管理することができます。
    例えば、Diskpart コマンドや [ディスクの管理] MMC スナップインは、VDS API ベースのプログラムとなります。
    これにより、ユーザーは、異なるベンダーのストレージ デバイスを、同一のユーザー インターフェイス経由で管理することができます。

    VDS はソフトウェア プロバイダーとハードウェア プロバイダーという 2 種類のインターフェイスを公開しています。

     

     

    ソフトウェア プロバイダーについて
    --------------------------------------
    ソフトウェア プロバイダーは、ボリューム、ディスク、ディスク パーティションなどへのインターフェイスを実装しています。
    これらのインターフェイスは、例えば、ボリュームの作成、拡張、削除機能、または、ミラーの追加 / 解除、ボリュームのフォーマットやドライブ文字の割り当て機能などを提供します。
    Windows Server 2003 および Windows Server 2008、Windows Server 2008 R2 では、ベーシック ディスクへのインターフェイスを提供する、ベーシック ソフトウェア プロバイダーと、ダイナミック ディスクへのインターフェイスを提供する、ダイナミック ソフトウェア プロバイダーがあります。

    ハードウェア プロバイダーについて
    --------------------------------------
    ハードウェア プロバイダーは、ハードウェア ベンダーにより、DLL として実装されます。
    DLL はレジストリ内に登録され、デバイスに依存しない VDS コマンドをハードウェア固有のコマンドに変換します。
    また、ハードウェア RAID アレイやアダプター カードなどのストレージ サブシステムの管理機能も提供しており、LUN の作成、拡張、削除、マスク、あるいは、マスク切り替えなどがサポートされています。

    なお、VDS サービスは、アプリケーションが VDS API への接続を開始した際に、VDS ローダー プロセスにより起動され、操作終了後には自動で終了します。

    - 参考情報
    About VDS (Windows)
    http://msdn.microsoft.com/en-us/library/windows/desktop/aa381442(v=vs.85).aspx

     

    イベント ソース : VDS Basic Provider について
    ===================================================
    Windows Server 2003 および Windows Server 2008、Windows Server 2008 R2 で、以下のようなイベントが記録されることがあります。

    ************************************************************
    イベントの種類: エラー
    イベント ソース: VDS Basic Provider 1.0
    イベント カテゴリ: なし
    イベント ID: 1
    日付: 日付
    時刻: 時刻
    ユーザー: N/A
    コンピュータ: コンピュータ名
    説明:
    予期しないエラーが発生しました。エラー コード: xx@xxxxxxxx
    ************************************************************

    VDS サービスは、デバイスやデバイス コントローラから情報を取得したり、操作を行うために Plug&Play マネージャ経由でドライバに対して要求を行います。
    その要求が何らかの問題によりエラーとなった場合、予期しないエラーが発生したとして、本イベントが記録されることがあります。
    なお、このエラーは、 2 つの情報を含んでおり、@ 前の値はエラー コード、@ 以降の値は内部関数の発生場所を示します。
    記録されるエラー コードはイベントの発生状況により異なりますが、過去事例では以下のものが報告されています。

    32@01000004 (ERROR_NOT_SUPPORTED)
    D@0101004 (ERROR_INVALID_DATA)
    2@01010013 (ERROR_FILE_NOT_FOUND)
    490@01010004 (ERROR_NOT_FOUND)
    1@01000003 (ERROR_INVALID_FUNCTION)
    57@01010018 (ERROR_INVALID_PARAMETER)
    1@02000018 (ERROR_INVALID_FUNCTION)

    これらのエラー コードは過去事例において無視しても良いと判断されたものですが、本イベントが記録された際には、エラー コードのみで判断せず、その前後でどのような処理を行っていたかがより重要です。

    通常稼働時に本イベントが記録される場合、デバイスや、デバイスへのパスに問題が発生していることが考えられます。
    ただし、バックアップ処理などにより、一時的なパスの切断などが発生しており、そのタイミングで記録される場合、実害が発生していないようであれば、本イベントは無視できます。
    例えば、バックアップ処理の中で、Diskpart を使用してディスクのオフライン操作を行っている場合などに、VDS サービスからの情報の取得要求が行われたものの、オフライン処理中だったために、取得に失敗し、エラーが記録されることなどがあります。

    なお、以下の公開情報では、本イベントが無視できるケースについて記載されています。

    文書番号: 979391
    VDS 基本的プロバイダー イベント ID 1 HYPER-V ゲスト オペレーティング システムにログオンしています。
    http://support.microsoft.com/kb/979391/ja

    文書番号: 932446
    システム センター Data Protection Manager 2006 に DpmBackup プログラムを使用すると、システム ログにエラー イベント:「エラー コード 1@01000003]
    http://support.microsoft.com/kb/932446/ja