2012/12/23

Windows Server 2012でリモートデスクトップを有効化するコマンド (PowerShell v3準拠版)

前のエントリでは2008/2008R2でも使える、ある意味歴史的なリモートデスクトップ接続の有効化手順を掲載したので、2012から搭載されたPowerShell v3+cmdletによる有効化手順も作ってみました。

■PowerShellから、拡張されたファイアウォール規則を有効化する


PS C:\Windows\system32> Get-NetFirewallRule -Group "@FirewallAPI.dll,-28752"

Name                  : RemoteDesktop-UserMode-In-TCP
DisplayName           : リモート デスクトップ - ユーザー モード (TCP 受信)
Description           : RDP トラフィックを許可するためのリモート デスクトップ サービスの受信規則です。[TCP 3389]
DisplayGroup          : リモート デスクトップ
Group                 : @FirewallAPI.dll,-28752
Enabled               : True
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 : 
PrimaryStatus         : OK
Status                : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

Name                  : RemoteDesktop-UserMode-In-UDP
DisplayName           : リモート デスクトップ - ユーザー モード (UDP 受信)
Description           : RDP トラフィックを許可するためのリモート デスクトップ サービスの受信規則です。[UDP 3389]
DisplayGroup          : リモート デスクトップ
Group                 : @FirewallAPI.dll,-28752
Enabled               : True
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 : 
PrimaryStatus         : OK
Status                : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local


PS C:\Windows\system32> Enable-NetFirewallRule -Group "@FirewallAPI.dll,-28752"

PS C:\Windows\system32>

@FirewallAPI.dll,-28752 は、「リモート デスクトップ」の内部名。
(見たまんまですがメッセージカタログIDですね…表示上はDLLから日本語名にして返してくれてるんだと思います)

<追記>

■メッセージカタログIDの対照表 (日本語CP932の環境の場合)



PS C:\Windows\system32> Get-NetFirewallRule | Sort-Object -Unique -Property Group | Format-List -Property Group,DisplayName


Group       : @comres.dll,-3400
DisplayName : COM+ ネットワーク アクセス (DCOM-受信)

Group       : @comres.dll,-3405
DisplayName : COM+ リモート管理 (DCOM-受信)

Group       : @FirewallAPI.dll,-25000
DisplayName : コア ネットワーク - ルーター アドバタイズ (ICMPv6 受信)

Group       : @FirewallAPI.dll,-28002
DisplayName : キー管理サービス (TCP 受信)

Group       : @FirewallAPI.dll,-28502
DisplayName : ファイルとプリンターの共有 (NB データグラム送信)

Group       : @FirewallAPI.dll,-28602
DisplayName : SMBDirect でのファイルとプリンターの共有 (iWARP 受信)

Group       : @FirewallAPI.dll,-28752
DisplayName : リモート デスクトップ - ユーザー モード (UDP 受信)

Group       : @FirewallAPI.dll,-29002
DisplayName : iSCSI サービス (TCP 送信)

Group       : @FirewallAPI.dll,-29252
DisplayName : リモート イベントのログ管理 (NP 受信)

Group       : @FirewallAPI.dll,-29502
DisplayName : リモート サービス管理 (RPC-EPMAP)

Group       : @FirewallAPI.dll,-30002
DisplayName : Windows ファイアウォール リモート管理 (RPC-EPMAP)

Group       : @FirewallAPI.dll,-30252
DisplayName : Windows リモート管理 - 互換モード (HTTP-In)

Group       : @FirewallAPI.dll,-30267
DisplayName : Windows リモート管理 (HTTP 受信)

Group       : @FirewallAPI.dll,-32752
DisplayName : ネットワーク探索 (SSDP 受信)

Group       : @FirewallAPI.dll,-33252
DisplayName : スケジュールされたリモート タスク管理 (RPC-EPMAP)

Group       : @FirewallAPI.dll,-33502
DisplayName : 分散トランザクション コーディネーター (TCP 受信)

Group       : @FirewallAPI.dll,-33752
DisplayName : ルーティングとリモート アクセス (PPTP 送信)

Group       : @FirewallAPI.dll,-34251
DisplayName : Windows Management Instrumentation (非同期受信)

Group       : @FirewallAPI.dll,-34501
DisplayName : リモート ボリューム管理 - 仮想ディスク サービス (RPC)

Group       : @FirewallAPI.dll,-34752
DisplayName : パフォーマンス ログと警告 (TCP 受信)

Group       : @FirewallAPI.dll,-36501
DisplayName : TPM 仮想スマートカード管理 (TCP 送信)

Group       : @firewallapi.dll,-36751
DisplayName : リモート シャットダウンの受信規則 (RPC-EP 受信)

Group       : @netlogon.dll,-1010
DisplayName : Netlogon サービス (NP 受信)

Group       : @peerdistsh.dll,-9000
DisplayName : BranchCache コンテンツ取得 (HTTP-送信)

Group       : @peerdistsh.dll,-9001
DisplayName : BranchCache ピア検出 (WSD-受信)

Group       : @peerdistsh.dll,-9002
DisplayName : BranchCache ホスト型キャッシュ サーバー (HTTP-送信)

Group       : @peerdistsh.dll,-9003
DisplayName : BranchCache ホスト型キャッシュ クライアント (HTTP-送信)

Group       : @scwcmd.exe,-8000
DisplayName : SCW リモート アクセス ファイアウォール規則 - Scshost - 動的 RPC

Group       : @snmptrap.exe,-3
DisplayName : SNMP トラップ サービス (UDP 受信)

Group       : @sstpsvc.dll,-35001
DisplayName : Secure Socket トンネリング プロトコル (SSTP 受信)

Group       : @vmicres.dll,-700
DisplayName : 仮想マシンの監視 (RPC)




PS C:\Windows\system32> 




Windows Server 2012でリモートデスクトップを有効化するコマンド


ServerCoreでもHyper-V上のでも、とりあえずリモートデスクトップを最初に有効化することが多いと思うのでコマンド類をメモ。

■リモートデスクトップ接続を有効にする

PS C:\Users\Administrator> cscript c:\windows\system32\scregedit.wsf /ar 0
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

レジストリが更新されました。
PS C:\Users\Administrator>

■リモートデスクトップのファイアウォール規則を有効化 (RDPポートの開放)

PS C:\Users\Administrator> netsh advfirewall firewall set rule group="リモート デスクトップ" new enable=yes

2 規則を更新しました。
OK

PS C:\Users\Administrator>

■とりあえず対話的にやりたいときは

Sconfigコマンドを使えば、コマンドプロンプト上でメニュー形式で設定変更も出来ますね。




以上、ご参考までに。

2012/12/10

TrendMicroウイルススキャンが入っている環境で、Hyper-Vの仮想ディスク追加が失敗する場合の対処方法

TrendMicroのウイルススキャンソフトなどが導入された環境で、Hyper-V管理コンソール上で仮想マシンに仮想ディスクの作成・追加などが失敗する場合の対処方法をメモ。

<発生するエラー>


  • デバイス 'Synthetic Disk Drive' を追加できませんでした。
    '仮想マシン'は、デバイス 'Synthetic Disk Drive' を追加できませんでした。(仮想マシンID …)
    'C:\ProgramData\Microsoft\Windows\Hyper-V'にある Virtual Machines 構成 … はアクセス出来なくなりました: 要求された操作はユーザマップセクションで開いたファイルでは実行出来ません。(0x800704C8)


<対処方法>

この問題を解決するには、ウイルス対策ソフトウェア内のリアルタイム スキャン コンポーネントで次のディレクトリおよびファイルが除外されるように構成します。
  • 既定の仮想マシン構成ディレクトリ (C:\ProgramData\Microsoft\Windows\Hyper-V)
  • カスタム仮想マシン構成ディレクトリ
  • 既定の仮想ハード ディスク ドライブ ディレクトリ (C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks)
  • カスタム仮想ハード ディスク ドライブ ディレクトリ
  • スナップショット ディレクトリ
  • Vmms.exe
  • Vmwp.exe
また、Windows Server 2008 R2 でクラスターの共有ボリューム (CSV) と一緒にライブ マイグレーションを使用するときは、CSV パス "C:\Clusterstorage" とそのすべてのサブディレクトリを除外します。
(KB情報より引用)
たとえば、トレンドマイクロウイルススキャンの場合は、設定画面で上記設定を実施すれば良い。
が、コーポレートエディションなどで管理者コンソールが封じられている場合は、たとえば下記のようなレジストリを設定すれば良い。


[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TrendMicro\PC-cillinNTCorp\CurrentVersion\Real Time Scan Configuration]
"Enable"=dword:00000001
"ExcludedFolder"="C:\\ProgramData\\Microsoft\\Windows\\Hyper-V"

(Enableをdword:0にすると、リアルタイムスキャンが止まってしまうので注意)


<参考>

Hyper-V をインストールした Windows Server 2008 ベースのコンピューターまたは Microsoft Hyper-V Server 2008 ベースのコンピューターで仮想マシンを作成または起動すると、エラー コード "0x800704C8"、"0x80070037"、または "0x800703E3" が表示されることがある [KB961804]

2012/12/09

RHEL/CentOSにHyper-V統合サービス3.4をインストールした。

RHEL 6.3にHyper-V統合サービスをインストールしたときの手順メモとして。

■マイクロソフトからHyper-V統合サービスのISOファイルをダウンロード

Linux Integration Services Version 3.4 for Hyper-V からLinuxICv34.isoをダウンロードする。

■NICを認識させたい仮想マシンにHyper-V統合サービスのISOファイルをマウントする。

GUIで操作しても良いですけど、気分的にPowerShellでやってみた。
  1. PowerShellを管理者として実行。
  2. Get-VMコマンドでISOディスクをマウントしたい仮想マシン名(Name)を一応確認。
  3. Get-VMDvdDriveコマンドで仮想マシンに何もマウントされてないかどうか確認。
  4. Set-VMDvdDriveコマンドでISOディスクのパスを設定しマウント。
  5. Get-VMDvdDriveコマンドでISOディスクがマウントできたか確認。

■Hyper-V統合サービスのインストールを行う。

LinuxICの中をマウントすると、対応OS毎にディレクトリが分かれているので、入れたいものに合わせてinstall.shを実行する。
主な流れは下のとおり。

  • mount /dev/cdrom /mnt
  • cd /mnt/RHEL63
  • ./install.sh
  • shutdown -r now



■Hyper-V統合NICの設定

あとは普通のethXとして見えてくるのでIPアドレスの設定などを行えばOK。