Windowsクライアントでサーバーマネージャを使うまで


# いきさつ
今さらながらWindows Serverを勉強していて、せっかくなのでServer Coreを触ってみようと思い立ったものの、リモートからのサーバーマネージャの接続にはまったのでメモ。
試行錯誤しながら構築したので一部不足している手順があるかもです。

# 検証環境
サーバー : Windows Server 2012 R2
サーバーマネージャ : Windows 8.1

ワークグループ環境にて行いました。(たぶん今回はまった一番の要因だけど、ドメイン環境まではまだ構築してない。)

# サーバーマネージャを使う方法

## サーバーに入れる

もちろんこれが一番早い方法。
Windows Server 2012からGUIモードの切り替えが可能になったらしい。
インストール時に「Server Core インストール」と「GUI使用サーバー」が選べるが、インストール後にその中間に位置する「最小サーバー インターフェイス」というGUI管理ツールとかだけ使用可能なモードもあり、それぞれを任意のタイミングで切り替えが可能。

これにより、セットアップ時はGUI使用サーバーまたは最小サーバーインターフェイスを使用して、セットアップが終わったらServerCoreにするという運用ができるとのこと。

ServerCoreの場合は以下のコマンドで有効化できる。(インストールディスクを使用する場合は末尾を参考にSourceオプションを使用する)

```PowerShell
# ServerCore → 最小サーバーインターフェイス
Install-WindowsFeature Server-Gui-Mgmt-Infra

# ServerCore → GUI使用サーバー
Install-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell

# GUI使用サーバー → ServerCore
Uninstall-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell

# 最小サーバーインターフェイス → ServerCore
Uninstall-WindowsFeature Server-Gui-Mgmt-Infra

# GUI使用サーバー → ServerCore
Uninstall-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell
```

> ただ、やろうとしたけどうまくいかないので調査中。
> 今回の目的とは違うのでいったん置いておこうということで。


## リモートサーバー管理ツールを使用する方法
サーバーをまとめて管理したい、ServerCoreでGUI管理をしたい場合に使用する方法

### サーバー側の操作
sconfigにて「リモート管理の構成」を有効にするだけ。

```bat
> sconfig
```

```
===============================================================================
                         サーバー構成
===============================================================================

...
4) リモート管理の構成                           無効
...

選択するオプションの番号を入力してください: 4

--------------------------------
  リモート管理の構成
--------------------------------

現在の状態: リモート管理は無効です

1) リモート管理を有効にする
2) リモート管理を無効にする
3) Ping に対するサーバー応答の構成

4) メイン メニューに戻る

選択内容を入力してください: 1

リモート管理を有効にしています...

--------------------------------
  リモート管理の構成
--------------------------------

現在の状態: リモート管理は有効です

1) リモート管理を有効にする
2) リモート管理を無効にする
3) Ping に対するサーバー応答の構成

4) メイン メニューに戻る

選択内容を入力してください: 4

===============================================================================
                         サーバー構成
===============================================================================

...
15) 終了してコマンド ラインに戻る
...

選択するオプションの番号を入力してください: 15
```

必要に応じてPing応答も有効にしておきます。
あと、サーバーのIPかホスト名を調べておきます。


### リモート管理を行う側の操作
1. OSに合わせてリモートサーバー管理ツールをインストールします。(自分はWindows 8.1用をインストールしました)

2. PowerShellを管理者権限で起動し、以下のコマンドを実行します。

    ```PowerShell: 
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value 'サーバーのIPまたはホスト名'
    # 確認のプロンプトでEnterを押下

    # 以下のコマンドで設定の確認が可能
    Get-Item WSMan:\localhost\Client\TrustedHosts
    ```

3. サーバーマネージャを起動して、「管理」メニューの「サーバーの追加」をクリックします。

4. DNSに先ほど指定した名前を入力し、エラーが出た場合も「はい」を選択します。
    ドメインに所属している場合は「ActiveDirectory」から探せると思います。
    右にIP/ホスト名が表示されている状態でOKをクリックします。

5. 資格情報が異なる(特にクライアントOS)場合はエラーが表示されるので、「すべてのサーバー」タブを開き、対象のサーバーを右クリック、「管理に使用する資格情報」をクリックします。

6. サーバーの管理者アカウントを入力します。
    ワークグループの場合はドメイン名の省略が出来ないようなので「サーバー名\ユーザー名」の形式で入力します。

以上にて完了です。

今回はまった原因は2の手順を**<font color=red>クライアント</font>**側で実行していなかったからでした。


# 今回使ったPowerShellコマンド

## 役割と機能の名前を探す
後述する役割と機能の追加と削除で使用します。

```PowerShell
Get-WindowsFeature
Get-WindowsFeature | Where-Object -Property Name -Like '*infra*'
```
上はすべての機能を、下はNameにinfraを含む機能を表示するためのコマンド。
ちなみに下のコマンドの結果はこんな感じ(ServerCoreにて実行)

```
Display Name                                            Name                       Install State
------------                                            ----                       -------------
[X] ユーザー インターフェイスとインフラストラクチャ     User-Interfaces-Infra          Installed
    [ ] グラフィック管理ツールとインフラストラクチャ    Server-Gui-Mgmt-Infra            Removed
```

## 役割と機能を追加する/削除する
複数の機能を対象とする場合はスペースを入れずに`,`区切りで並べる
同様のことが`dism`コマンドでも多分出来ると思う

```PowerShell:追加
# Windows Update経由で行う場合
Install-WindowsFeature 機能名
# Install-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell
```


```PowerShell:削除
Uninstall-WindowsFeature 機能名
```

### インストールディスクから追加する場合

```PowerShell:追加
# インストールディスク経由で行う場合
Install-WindowsFeature 機能名 -Source -Source wim:D:\sources\install.wim:4
```

install.wimの後ろの番号はwimファイル内でのエディション毎のインデックス。
これを調べるには以下のコマンドを使う

```PowerShell
Get-WindowsImage -ImagePath D:\sources\install.wim
```

すると以下のような結果が表示されるので対象のエディションの**<font color=red>フルインストールイメージ</font>**のインデックスを指定する。
今回はDataCenterエディションで検証を行ったのでインデックスは4となる。

``` 
Index       : 1
Name        : Windows Server 2012 R2 SERVERSTANDARDCORE
Description : Windows Server 2012 R2 SERVERSTANDARDCORE
Size        : 7,024,808,868 bytes

Index       : 2
Name        : Windows Server 2012 R2 SERVERSTANDARD
Description : Windows Server 2012 R2 SERVERSTANDARD
Size        : 12,183,213,863 bytes

Index       : 3
Name        : Windows Server 2012 R2 SERVERDATACENTERCORE
Description : Windows Server 2012 R2 SERVERDATACENTERCORE
Size        : 7,023,188,455 bytes

Index       : 4
Name        : Windows Server 2012 R2 SERVERDATACENTER
Description : Windows Server 2012 R2 SERVERDATACENTER
Size        : 12,208,335,501 bytes
```

で出来るはずなんだけど・・・。
上記同様うまくいかないので調査中。(インストールイメージ的な問題らしい？)

# ServerCore軽い！
ServerCore起動時のメモリ使用量が0.4GBとかだったのでかなり感動しました。