今週はタイトルの通り、コマンド操作によるユーザーアカウントやグループの管理について解説する。使用するコマンドは「NETコマンド」と呼ばれるコマンド群の一員である、NET USERコマンドとNET LOCALGROUPコマンドだ。

クライアント用のWindowsでは、エディションによっては[コンピュータの管理]管理ツールを利用できないため、管理ツールではグループを使ったユーザー管理を行えない。また、WindowsサーバでもServer Coreインストールを行っていると、コマンドによる操作が必須になる。そこで、ユーザーアカウントとグループの作成・管理について、コマンド操作による手順を解説する次第だ。

なお、以下で解説する内容ではコマンド名や引数などを大文字で記述しているが、実際には小文字で記述しても問題なく受け付けられる。

ユーザーアカウントの追加・削除

ユーザーアカウントの操作には、NET USERコマンドを使用する。用途によって構文が異なり、それぞれ以下のようになっている。

  • ユーザーアカウントの一覧表示 : NET USER
  • ユーザーアカウントの追加 : NET USER <ユーザー名> {パスワード | *} /ADD [オプション]
  • ユーザーアカウントの削除 : NET USER <ユーザー名> /DELETE

[オプション]として指定可能な内容の例としては、以下のものがある。

NET USERコマンドで使用可能なオプションの例

引数 解説
/ACTIVE:{YES | NO} アカウントの有効・無効を指定(既定値はYES)
/COMMENT:"" ユーザー アカウントの説明文を " " で囲んで指定
/EXPIRES:{ | NEVER} アカウントの有効期限。日付で「yy/mm/dd」または「yyyy/mm/dd」形式で指定。「NEVER」を指定すると無期限になる
/FULLNAME:"" ユーザーのフルネームを指定
/PASSWORDCHG:{YES|NO} ユーザー自身がパスワードを変更できるかどうかを指定(既定値はYES)
/PASSWORDREQ:{YES | NO} パスワードが必須かどうかを指定(既定値はYES)

たとえば、ユーザーアカウント「kojii」を追加して、パスワードとして「Rock-101」を設定する場合の入力内容は、以下のようになる。

NET USER KOJII Rock-101

また、そのユーザーアカウント「kojii」を削除する場合の入力内容は、以下のようになる。

NET USER kojii /DELETE

パスワードは半角14文字以内で指定するが、パスワードの代わりに「*」を指定すると、コマンド実行時にパスワードの入力を求めてくる仕組みだ。指定するパスワードは、ローカルセキュリティポリシーで規定した条件に適合していなければならないが、これは管理ツールを使って指定する場合でも同じことだ。

なお、NET USERコマンドに独特の隠し機能として、ランダムなパスワードを生成・設定する機能がある。「NET USER <ユーザー名> /RANDOM」と入力するもので、自動的に生成・設定したパスワードはコマンド実行後の画面に現れる。それをユーザー本人に知らせて、それを使ってログオンしてもらう形になる。

ユーザーアカウントのパスワード設定

こうして作成したユーザーアカウントのパスワードを管理者が再設定する際には、やはりNET USERコマンドを使用する。構文は以下の通りだ。

NET USER <ユーザー名> {<パスワード>|*} [/RANDOM]

パスワードを明示的に指定する方法、「*」を入力してパスワードだけ別途入力する方法、引数「/RANDOM」によってランダムなパスワードを自動生成・設定する方法を選択できるのは、ユーザーアカウントを追加するときと同じだ。

たとえば、既存のユーザー「kojii」のパスワードをリセットして、ランダムなパスワードを設定する際の入力内容は、以下のようになる。

NET USER kojii /RANDOM

グループの追加

グループの追加/削除には、NET LOCALGROUPコマンドを使用する。用途によって構文が異なり、それぞれ以下のようになっている。(NET GROUPというコマンドもあるが、こちらはActive Directory向けで、ローカルグループの管理には使えない点に注意)

  • グループの一覧表示 : NET LOCALGROUP
  • グループの作成 : NET LOCALGROUP <グループ名> /ADD [/COMMENT:"<テキスト>"]
  • グループの削除 : NET LOCALGROUP <グループ名> /DELETE

たとえば、グループ「Local_Dev」を追加して、その際にコメント「開発者グループ」を指定する場合の入力内容は、以下のようになる。

NET LOCALGROUP Local_Dev /ADD /COMMENT:"開発者グループ"

また、そのグループ「Local_Dev」を削除する場合の入力内容は、以下のようになる。

NET LOCALGROUP Local_Dev /DELETE

グループのメンバー変更

最後に、NET LOCALGROUPコマンドを使ったグループのメンバー変更について解説しておこう。用途によって構文が異なり、それぞれ以下のようになっている。

  • グループのメンバー追加 : NET LOCALGROUP <グループ名> <ユーザー名>[...] /ADD
  • グループのメンバー削除 : NET LOCALGROUP <グループ名> <ユーザー名>[...] /DELETE

紛らわしいのは、コマンド名がグループの作成/削除と同じで、しかも引数「/ADD」「/DELETE」まで同じになっている点だ。引数の記述内容によって動作が変化するということで、それをかいつまんで説明すると、以下のようになる。

  • 引数にグループ名だけを指定して「/ADD」「/DELETE」を続けた場合には、グループそのものの追加/削除を行う
  • 引数に、グループ名に加えてユーザーアカウント名を指定して「/ADD」「/DELETE」を続けた場合には、グループのメンバーの追加/削除を行う

具体的な使用例を以下に示そう。

  • グループ「Local_Dev」に、ユーザー「kojii」を追加 : NET LOCALGROUP Local_Dev kojii /ADD
  • グループ「Local_Dev」から、ユーザー「kojii」を削除 : NET LOCALGROUP Local_Dev kojii /DELETE

なお、グループに追加/削除するメンバーのユーザーアカウント名を記述する際には、スペースで区切って複数のユーザーアカウント名を列挙できる。だから、同時に多数のユーザーアカウントを追加する場合に、いちいちコマンドを入力し直す必要はない。ただしコマンド操作の常で、1文字でも入力ミスがあるとエラーになってしまうので、入力する内容が多くなるほど注意深く入力する必要がある。注意したい。

NETコマンドのヘルプ

最後に、これらのコマンドを含むNETコマンドのヘルプの表示方法について、簡単に解説しておこう。

NETコマンドにどういったものがあるかは、「NET HELP」と入力すると確認できる。そして、個々のコマンドについて構文や引数について知りたいときには、「NET HELP <コマンド名>」と入力すればよい。たとえばNET LOCALGROUPについて知りたいのであれば、「NET HELP LOCALGROUP」と入力する。