Windows：コマンドラインでのローカルグループ設定

# 前提条件
・WindowsServer2012R2
・PowerShell2.0以上
・ActiveDirectoryドメイン環境
・ドメイン名：contoso.local
・ドメインコントローラFQDN名：CONTOSOADSVR
・ドメインメンバFQDN名：：CONTOSOMEMSVR001　～999　まで999台あるとする。
・ドメインユーザ：test01@contoso.local

# 前置き
「え、ローカルグループ設定なんてラクっしょ？GUIでもできるっしょ？」
そう思ったそこのあなた。
世の中にはサーバを何台も管理しているシステムもあるんです。
そんなふうに、Windowsサーバがたくさんあるシステムで、すべてにローカルグループを設定しなければならない状況になったら・・・。

# やりたいこと
ニッチな需要とは思いますが、今回やりたいことは以下。
　・ドメインユーザに対して、各サーバのローカルグループを付与する。

「DomainUsers」だと権限が高すぎる等の理由で、どうしてもローカルUsersにだけ
割り当てをしたい、というご要望。

間違えないでほしいのは、この点。
×：ドメインユーザ「test01」に対して「ドメイン名\Users」グループを付与
○：ドメインユーザ「test01」に対して「マシン名\Users」を付与

## 手順（対象メンバーサーバ1台にログインして個々に実施する場合）
コマンドプロンプトを開いて、以下実施。

事前確認。

```cmd
> net localgroup "Users"
エイリアス名     users
コメント         ユーザーが、システム全体に及ぶ変更を間違ってまたは故意に行うことを防ぎます。ほとんどのアプリケーションを実行することができます。

メンバー

-------------------------------------------------------------------------------
NT AUTHORITY\Authenticated Users
NT AUTHORITY\INTERACTIVE
コマンドは正常に終了しました。
```

追加

```cmd
> net localgroup "Users" "test01@contoso.local" /ADD
```

事後確認。

```cmd
> net localgroup "Users"
エイリアス名     users
コメント         ユーザーが、システム全体に及ぶ変更を間違ってまたは故意に行うことを防ぎます。ほとんどのアプリケーションを実行することができます。

メンバー

-------------------------------------------------------------------------------
CONTOSOMEMSVR001\test01@contoso.local
NT AUTHORITY\Authenticated Users
NT AUTHORITY\INTERACTIVE
コマンドは正常に終了しました。
```


## 手順（ドメインコントローラからリモートで対象メンバサーバに実施する場合）
個別手順は1台ずつログインする必要があるので、非常にしんどい。
以下はリモートで実施する手順。ドメインコントローラサーバにて実施する。
※サーバ台数が少なければ問題ないが、多いとこの手順が有効。
※ホスト名をforeachなどに食わせてシェル化も可能。
PowerShellを開いて、以下実施。

事前確認

```powershell
> Invoke-Command -ComputerName "CONTOSOMEMSVR001" -ScriptBlock { cmd /c net localgroup "Users" } 

エイリアス名     users
コメント         ユーザーが、システム全体に及ぶ変更を間違ってまたは故意に行うことを防ぎます。ほとんどのアプリケーションを実行することができます。

メンバー

-------------------------------------------------------------------------------
NT AUTHORITY\Authenticated Users
NT AUTHORITY\INTERACTIVE
コマンドは正常に終了しました。
```

追加

```powershell
> Invoke-Command -ComputerName "CONTOSOMEMSVR001" -ScriptBlock { cmd /c net localgroup "Users" "test01@contoso.local" /ADD }
```

事後確認

```powershell
> Invoke-Command -ComputerName "CONTOSOMEMSVR001" -ScriptBlock { cmd /c net localgroup "Users" }
エイリアス名     users
コメント         ユーザーが、システム全体に及ぶ変更を間違ってまたは故意に行うことを防ぎます。ほとんどのアプリケーションを実行することができます。

メンバー

-------------------------------------------------------------------------------
CONTOSOMEMSVR001\test01@contoso.local
NT AUTHORITY\Authenticated Users
NT AUTHORITY\INTERACTIVE
コマンドは正常に終了しました。
```

## 追加ドメインユーザーが複数ある場合
コマンドプロンプト

```cmd
> net localgroup "Users" "test01@contoso.local" "test02@contoso.local" /ADD
```

PowerShell

```powershell
> Invoke-Command -ComputerName "CONTOSOMEMSVR001" -ScriptBlock { cmd /c net localgroup "Users" "test01@contoso.local" "test02@contoso.local" /ADD }
```


# 余談
『グリー/GLEE』という学園ドラマを流し見（作業しながら見）たのですが、個人的には興味範囲外のドラマでした。しかし、そんな中で昔聞いたことある曲が流れ、ちょっと驚きました。
それは昔流行った往年のポップ曲（一発屋）ですが、リズムがいい感じの曲です。そして、ノリノリになってからこの曲の歌詞を見ると驚愕します。
thong=ひも、song=うた　すなわち「紐の歌」となりますが、これが何の紐か、何に備わっている紐か、掛け声の「Let me see that thong（その紐を俺に見せてくれ）」の意味を調べると、純日本人からすると頬を赤らめてしまう、そんな一曲です。
この歌手はもうこの一曲だけで、歴史に名を刻んだといっても過言ではないでしょう。

[link1]:https://www.youtube.com/watch?v=Oai1V7kaFBk
[Sisqo - Thong Song][link1]