Hyper-V Server に Hyper-V マネージャーで接続する

# はじめに
**Hyper-V Server 2012** を使っているのですが [^1]、クライアント PC が新しくなるたびにいつも設定に悪戦苦闘するので備忘録。

# Hyper-V Server

## Hyper-V Server とは
**Hyper-V Server** とは Hyper-V 機能のみを利用できるように機能を省いた Windows Server です。無償で利用可能で、最新版は Hyper-V Server 2019 です。

 - [Windows Server 評価版ソフトウェア (Microsoft)](https://www.microsoft.com/ja-jp/evalcenter/evaluate-hyper-v-server-2019)

Hyper-V Server は既に稼働している前提です。

| 項目 | 説明 |
|:---|:---|
| サーバー名 | **HV-SERVER** |
| IP アドレス | **192.168.1.100** |

## クライアント PC の設定
クライアント PC で **Hyper-V マネージャ** を使って Hyper-V Server を管理します。Windows 10 / 11 だと Pro 以上の SKU が必要です。

### Hyper-V の有効化
`[Windows の機能の有効化または無効化]` から Hyper-V を有効化します。

[Windows の機能の有効化または無効化] は `[ファイル名を指定して実行]` (〔Win〕+〔R〕) から `optionalfeatures` で開けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/86d0ceda-784f-037e-8d51-26949433bb9a.png)
`Hyper-V` にチェックを入れて [OK] を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/b3946d17-6038-29e3-7376-e7069ec12b51.png)
Hyper-V が導入されると再起動を促されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/7b5e7280-ff64-9c7c-5720-c61e39e9acad.png)
再起動したら、管理者権限で **PowerShell** を開いておいてください。このメニューはスタートメニューを右クリックすると出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/6364590a-3f04-7ec6-d117-bdd23e7d5e8e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/d342821c-c6c1-e6de-2513-898a96fca70e.png)
**See also:**

 - [Hyper-V  (Wikipedia)](https://ja.wikipedia.org/wiki/Hyper-V)

### WinRM の設定
Hyper-V Server の操作には **Windows Remote Management (WinRM)** が使われるため、WinRM の設定を行う必要があります。

`[サービス]` の設定を開きます。`[ファイル名を指定して実行]` (〔Win〕+〔R〕) から `services.msc` です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/3a6e632a-c259-1e4b-defa-5a6fc4eb82a2.png)
`Windows Remote Management (WS-Management) サービス` が起動している事を確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/3907e7bf-78d5-14ab-1f8c-17061c118314.png)
起動していなければ起動してください。PowerShell で `net start winrm` です。

```powershell
PS C:\Windows\system32>net start winrm
Windows Remote Management (WS-Management) サービスを開始します.
Windows Remote Management (WS-Management) サービスは正常に開始されました。
```

次に PowerShell で `winrm quickconfig` を実行します。「変更しますか」のプロンプトでは `Y` を入力します。

```powershell
PS C:\Windows\system32> winrm quickconfig
WinRM サービスは、既にこのコンピューターで実行されています。
WinRM は、管理用にこのコンピューターへのリモート アクセスを許可するように設定されていません。
次の変更を行う必要があります:

WinRM ファイアウォールの例外を有効にします。
ローカル ユーザーにリモートで管理権限を付与するよう LocalAccountTokenFilterPolicy を構成してください。

変更しますか [y/n]? y

WinRM はリモート管理用に更新されました。

WinRM ファイアウォールの例外を有効にしました。
ローカル ユーザーにリモートで管理権限を付与するよう LocalAccountTokenFilterPolicy を構成しました。
```

もしここで次のようなエラーが出た場合には、ネットワーク接続プロファイルの設定を [プライベート] に変更してください。

```
このコンピューターのネットワーク接続の種類の 1 つが Public に設定されているため、WinRM ファイアウォール例外は機能しません。
-ネットワーク接続の種類を Domain または Private に変更して、やり直してください。
```

次に `TrustedHosts` に Hyper-V サーバーを追加します。`Set-Item WSMan:\localhost\Client\TrustedHosts -Value "HV-SERVER,192.168.1.100"` のようにホスト名と IP アドレスの両方をカンマ区切りで登録しておきます [^2]。

```powershell
PS C:\Windows\system32> Set-Item WSMan:\localhost\Client\TrustedHosts -Value "HV-SERVER,192.168.1.100"

WinRM セキュリティの構成。
このコマンドは WinRM クライアントの TrustedHosts の一覧を変更します。TrustedHosts
の一覧内にあるコンピューターは認証されない可能性があります。クライアントはこれらのコンピューターに資格情報を送信する可
能性があります。この一覧を変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): Y
```

`TrustedHosts` の確認は `Get-Item WSMan:\localhost\Client\TrustedHosts` で行えます。

```powershell
PS C:\Windows\system32> Get-Item WSMan:\localhost\Client\TrustedHosts


   WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Client

Type            Name                           SourceOfValue   Value
----            ----                           -------------   -----
System.String   TrustedHosts                                   HV-SERVER,192.168.1.100
```

**See also:**

 - [Windows Remote Management (Wikipedia: en)](https://en.wikipedia.org/wiki/Windows_Remote_Management)

### Hyper-V マネージャーの起動 (その 1)
**Hyper-V マネージャー** は [スタートメニュー] の `Windows 管理ツール` の中にあります。スタートメニューにピン留めしておくとよいでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/009b315b-b646-50ac-3b13-d467405f3b50.png)
とりあえず起動してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/229c9e97-c327-1158-dc08-4d38ae5eb6ca.png)
右上の [サーバーに接続...] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/e73ecbe8-63a9-216b-e8d4-657c6a1fb7e0.png)
[コンピュータの選択] ダイアログで `HV-SERVER` を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/25f80ba3-4d4d-a3ef-32ce-03e446c96ec6.png)
HV-SERVER は登録されましたが、`アクセスが拒否されました。` と出てしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/ecbc9357-d83f-13e7-e6f8-29b91016c2eb.png)

### コンポーネントサービス
**[コンポーネントサービス]** 設定を開きます。`[ファイル名を指定して実行]` (〔Win〕+〔R〕) から `dcomcnfg` 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/1cb80545-1b5d-9b64-6285-eff35770e763.png)
または `comexp.msc` です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4d660813-7492-da55-aa35-775bac6fd473.png)
このような画面になると思うので、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/70164c48-88e3-d80e-d9e8-ca8b951a3935.png)
左ペインで [コンソールルート | コンポーネントサービス | コンピュータ] と開き、`マイ コンピュータ` を右クリックしてプロパティを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/94606cd5-0932-d8b6-4abc-14cd29d08e18.png)
[COM セキュリティ] タブで `[制限の編集]` を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/52c2b37a-6320-f8e9-f575-f1b1a005d636.png)
`ANONYMOUS LOGON` グループを選択し、[リモートアクセス] の `許可` にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/6d229e4b-bbc2-006f-b4ed-72daea02b7f9.png)

### Hyper-V マネージャーの起動 (その 2)
今度はうまくいったようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/793fdb7d-3437-de0e-a0ab-87672cc7ead7.png)

### 設定できるネットワークプロファイルはすべてプライベートなのに「パブリックの接続プロファイルがある」と言われてしまう場合
**[ローカルセキュリティポリシー]** 設定を開きます。`[ファイル名を指定して実行]` (〔Win〕+〔R〕) から `secpol.msc` です。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/ef867016-04db-2957-2a80-25e59a0972b3.png)
左ペインで `ネットワークリストマネージャーポリシー` をクリックし、`識別されていないネットワーク` をダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/9061b10c-aa46-387b-0228-18b9d793d678.png)
[場所の種類] を `プライベート` に、[ユーザーのアクセス許可] を `ユーザーは場所を変更できる` に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/c6bf8518-f861-bafd-77ad-a56008e46472.png)
これでエラーは出なくなると思います。

# おわりに
ネットワーク越しの操作だからとは言え、設定が面倒すぎる気がします。

**See also:**

 - [Hyper-Vを一時的に無効にする方法 (Qiita: @slangsoft)](https://qiita.com/slangsoft/items/7379d00833c17ac6c3cd)


[^1]: ポンコツ PC で運用してるから Hyper-V Server 2012 のままです...察してください。
[^2]: `winrm set winrm/config/client '@{TrustedHosts="HV-SERVER,192.168.1.100"}'` でも設定できます。