WindowsにCUIを求めるのは間違っているだろうか？(導入編)

# はじまり

迷宮都市Microsoft──『Windows』と
通称される壮大なOSを保有する巨大都市。
未知という名の保守、輝かしい設定、
そして可愛いサーバーとのロマンス。
人の夢と欲望全てが息を潜めるこの場所で、
少年は一人の小さな「神様」に出会った。
「よし、〇〇君、付いてくるんだ!
【Windows Server】入団の儀式をやるぞ! 」
「はいっ! 僕は強くなります! 」
どの【OS】にも門前払いだった
サーバー運営志望の少年と、
CUIの神様が果たした運命の出会い。

# 記事の概要

茶番終了

Windows ServerはGUI操作を用いることができます。しかし、CUIでできないわけではない、そしてGUIでできないこともCUIではできる、といったことがあります。なので今回はCUIでいろいろなことをしていくのを記事にまとめていこうと思います。マウスをできるだけ使わないという制限をかけます(できるだけっていうのは検証が最後まで進んでいない為)

今回の検証ではWindows 10 pro上でhyper-Vを用いて仮想マシンを作成し、その中でWindows Server 2012 R2を動かしてます。インストールした物は`Datacenter Server Core`です。

また、インストールは終了し、Administrators画面に入るところからスタートします。またこの記事では基本的にCUI操作をPowerShell上で行います。

# コマンドプロンプトもしくはPowerShellの実行方法

Server Coreでは起動した際にこのような画面になっていると思います。
<img width="769" alt="cmd.ping.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/42927/f335e48c-7ad6-cab0-eba9-3f3a70d8d073.png">

ここで×を押すとコマンドプロンプトが閉じ、デスクトップに何も表示されません。
そういった際は`Ctrl+Alt+Delete`でタスクマネージャを起動し、「ファイル」から「新しいタスクの実行」をすることでコマンドプロンプトを再度表示させることができます。

<img width="769" alt="newcmd.png" src="https://qiita-image-store.s3.amazonaws.com/0/42927/ad641145-fd09-f6d2-c759-c72be0b99075.png">

コマンドプロンプト上で`powershell`と叩けばPowerShellに切り替わりますし、PowerShell上で`cmd`と叩けばコマンドプロンプトに切り替わります。

まぁ一応この画面もキーボードだけで操作できるので....


# PCの諸設定(`sconfig`)

`sconfig`ではPCの基本的な設定を行うことが可能な対話型のコマンドです

ドメイン変更/PC名変更/Windows Updateの手動自動切換え/Windows Update/リモートデスクトップ/ネットワーク/日付と時刻/ログオフ、再起動、シャットダウン

上記の設定はこのコマンドで設定可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/42927/958d124e-d23c-adf5-fe38-9a51db36cd91.png)

8)ネットワークの設定では下の画面のようにIPアドレスの設定(ネットワークマスクとデフォルトゲートウェイも設定可能)とDNSの設定が可能

![image.png](https://qiita-image-store.s3.amazonaws.com/0/42927/a086eb36-866e-7d5f-157b-50a46843cf3d.png)

それ以外も基本的にわかりやすいので説明は特になし、Sconfigでできることを覚えておけば困らないと思います。

# ユーザー/グループ/コンピュータアカウント設定(`net`コマンド)

ここではWindows Serverにユーザやグループを追加したり、それらのアカウントの全般的な設定方法について説明します。使用するコマンドは`net`コマンドです

## ユーザーに関して(`net user`)

`net user`コマンドでPC上のユーザーの追加・削除・変更を行えます。

また`net user`とだけ叩くことでユーザーの一覧を確認可能です。個別のユーザの詳細を確認するには`net user <ユーザー名>`とすれば確認可能です。

`net help user`で使用方法を見ることができます。もっと詳しい説明はそちらを見てください

### ユーザーの追加

ユーザーの追加は`net user <ユーザー名> <パスワード> /add`で追加可能です。
ユーザー名`demo-user`、パスワード`Orang3`で設定するには下のようにします

```
> net user demo-user Orang3 /add
コマンドは正常に終了しました
```

確認するとこのように

```
>net user

WIN-****の ユーザー アカウント

--------------------------------------
Administrator      demo-user   Guest

コマンドは正常に終了しました
```

### ユーザー削除

ユーザの削除は`net user <ユーザー名> /delete`で削除可能です。
先ほど作成した`demo-user`を削除します。

```
>net user demo-user /delete

コマンドは正常に終了しました

>net user

WIN-****の ユーザー アカウント

--------------------------------------
Administrator     Guest

コマンドは正常に終了しました
```

### ユーザーのパスワード変更及びオプション追加

パスワード変更はユーザー追加の時から`/add`を減らせばよいです。
オプション追加では`net user <ユーザー名>　オプション`でいけます

オプションには、主なものとして下記のようなものがあります

|オプション書式|説明|
|:--|:--:|
|\ACTIVE:{YES&#124;NO}|アカウントをアクティブ化、非アクティブ化します|
|\COMMENT:""|コメントを追加する|
|\LOGONPASSWORDCHG:{YES&#124;NO}|次回ログオン時にパスワード変更を行うかどうかの設定|
|\PASSWORDCHG:{YES&#124;NO}|ユーザーが自身でパスワードを変更可能かの設定|
|\HOMEDIR:パス名|ユーザーのホームディレクトリを指定|

GUIで設定可能な項目は当然オプションにあります。

消したdemo-userを作り直し、パスワードの変更を行いGuestのユーザーを非アクティブ化します。

```
>net user demo-user Appl3

コマンドは正常に終了しました

>net user Guest \active:NO

コマンドは正常に終了しました

```

ちなみに`demo-user`ですがhyper-VだとログインしようとするとRemoteの権限がないといってはじかれます。これは次のグループを追加してからログインする必要があります。なのでグループの説明をして最後にログインしようと思います

## グループに関して(`net localgroup`)

グループはユーザの権限をまとめて管理するものです。例えばAdministratorsグループに所属しているユーザーはAdministratorsの権限を利用できます。グループは自由に作成できますし、すでに存在しているローカルグループに追加することもできます。

ローカルグループの一覧はユーザーの時と同様`net localgroup`でローカルグループの説明は`net localgroup <グループ名>`

### ローカルグループの追加、ローカルグループにユーザーを追加

ローカルグループの追加は`net localgroup <グループ名> /add`で可能です

```powershell:
> net localgroup demo-group /add

コマンドは正常に終了しました
```

グループにユーザーを追加するには`net localgropu <グループ名> <ユーザー名> /add`とすればよいです。`demo-group`に`demo-user`を追加するのは下記のようになります。ついでにログインできるように`Remote Desktop Users"も追加します。グループ名に空白がある場合はダブルクォーテーションで囲むとよいでしょう。

```
> net localgroup demo-group demo-user /add

コマンドは正常に終了しました

> net localgroup "Remote Desktop Users" demo-user /add

コマンドは正常に終了しました
```

### ローカルグループからユーザーの削除、ローカルグループの削除

まずはローカルグループからユーザーの削除ですが、`/add`の時と同様に`net localgroup <グループ名> <ユーザー名> /delete`で削除できます。

```powershell

>net localgroup demo-group demo-user /delete

コマンドは正常に終了しました
 
```

ローカルグループそのものの削除は`net localgroup <グループ名> /delete`で削除可能です。グループにユーザーが所属していてもグループだけを削除できます。

```powershell

>net localgroup demo-group /delete

コマンドは正常に終了しました
 
```


## ユーザーアカウント設定(`net accounts`)

`net accounts`コマンドではユーザーがパスワードを設定する際の最小文字数やパスワードの変更できるようになるまでの日時設定、ログオン制限等が可能です。

これは全ユーザーアカウントに対しての処理となるので注意です。

使い方は`net accounts オプション`となります。オプションを指定しない場合、パスワードとログオン制限、ドメイン情報の現在の設定が出力されます

|オプション書式|説明|
|:--|:--:|
|\MINPWLEN:長さ|パスワードの最小文字数を設定、デフォルトは6|
|\MAXPWAGE:{日数&#124;UNLIMITED}|パスワードが有効な最大日数|
|\MINPWAGE:日数|パスワードが変更可能になる最小日数を指定する。0を指定するといつでも変更可能となる|

このようなオプションがあります。

## まとめ

* ユーザーの作成には`net user`コマンドを使う
* ローカルグループの作成には`net localgroup`コマンドを使う
* アカウント全般の設定には`net accounts`コマンドを使う

これらのコマンドには`/add`や`/delete`だけでなく、`/domain`というドメインコントローラーに対する処理も可能ですがそれはActive Directoryにたどり着いたときに書くことにします。