ネットワークコマンドで管理が変わる!
第3回 大量のユーザーアカウントを一括管理する
今月のコマンド
net user
net group
net localgroup
---------------------------------------------------------------------------
大量のユーザーアカウントを一括して操作したい!
net user
---------------------------------------------------------------------------
>バッチファイルを使って大量のアカウントを一括登録
「net user」コマンドは、ユーザーアカウントを表示・追加・編集・削除するための極めて有用なコマンドだ。
GUI画面では、Windows 2003 ServerのActive Directoryドメインコントローラであれば、「コントロールパネル」→「管理ツール」→「Active Directoryユーザーとコンピュータ」の画面で「ドメイン名」→「users」とたどってドメインユーザーを操作することができる。非ドメインコントローラのローカルユーザーは、「コントロールパネル」→「ユーザーアカウント」で操作できる (Windows XPではクラシック表示の場合)。またWindows 2003 ServerのCD-ROMからWindows XP Professionalに管理ツールパック (adminpak.msi) をインストールすればWindows XP Professionalでドメインユーザーを操作することもできる。
しかし、いずれの場合も、ユーザーを一人一人操作しなければならないので、例えば人事異動の時期などで大量のユーザーを操作するには不向きだ。「net user」コマンドを使うと大量のユーザーを一括して操作できる。もちろん1つの「net user」コマンドで複数のユーザーを操作できるわけではないが、コマンドの場合はバッチファイルを活用できるので、必要な数だけのコマンドをバッチファイルに記述しておけば、一発で実行できる。
ローカルユーザーアカウントを追加登録するには次のコマンドを使う。
net user <ユーザー名> <パスワード> /add
ドメインユーザーアカウントを追加登録するには次のコマンドを使う。
net user <ユーザー名> <パスワード> /add /domain
これを必要な数だけバッチファイルに記述すればよい。
ただし、このコマンドで作成されるのは、制限付きアカウントだ。制限付き以外のアカウントにするためには「net group」コマンド、あるいは「net localgroup」コマンドを使ってアカウントの種類を変更する。「net group」コマンド、および「net localgroup」コマンドについてはこの後で解説する。
/domainオプションを使うことで、Windows XPなどのクライアントコンピュータからドメインユーザーを登録することができる。クライアントコンピュータ上でコマンドを実行しても実際はドメインコントローラで実行される。この際に管理ツールパックをクライアントコンピュータにインストールする必要はないが、ドメインにログオンしているコンピュータ上でドメインの管理者アカウントで実行する必要がある。
上記の方法では新規にユーザーを追加する際に、暫定的なパスワードを記述しているが、大量のユーザーを追加する場合はパスワードを考えるのも大変だ。しかし、「/random」オプションを使うと自動的にランダムに生成したパスワードを付与することができる。このオプションはヘルプにも記述されていない隠しオプションだが、なかなか便利なオプションだ。ただし、生成されるパスワードは8文字なので、パスワードのポリシーでパスワード文字数を9文字以上必要に設定している場合は利用できない (連載第1回の「net accounts /minpwlen」を参照)。
この場合の書式は次のとおり。
net user <ユーザー名> /random /add
または
net user <ユーザー名> /random /add /domain
画面1● Windows XP上で、「net user test1 /random /add /domain」コマンドで、test1ユーザーをドメインに追加してパスワードを自動生成
「/random」オプションを使う場合は、生成されたパスワードを控えておき、ユーザーに通知する必要がある。画面に表示されるパスワードをいちいち手書きするのは面倒なので、画面メッセージをファイルにリダイレクトするのが利口な方法だ。こうしたこともコマンドならではの利点だ。コマンド例は次のとおり。これをバッチファイルに記述する。
net user <ユーザー1> /random /add > <テキストファイル>
net user <ユーザー2> /random /add >> <テキストファイル>
最初のリダイレクトには「>」を使い、2つ目以降には「>>」を使うのが注意点だ。全部「>」にしてしまうと、最後のユーザーのパスワードだけしか保存されないので気をつけて欲しい。
これをもう一ひねりして、
@echo off
net user <ユーザー1> /random /add
net user <ユーザー2> /random /add
というバッチファイル (仮にaddpass.batというファイル名とすると) を作成し、コマンドプロンプトに
addpass > <テキストファイル>
と入力することでも同じ結果が得られる。
>ユーザーアカウントの表示・削除・変更
あるユーザーアカウントの詳細を表示するには、「net user <ユーザー名>」または「net user <ユーザー名> /domain」を使う。またユーザーを削除するには、「net user <ユーザー名> /delete」または「net user <ユーザー名> /delete /domain」を使う。パスワードを変更する場合は、「net user <ユーザー名> <パスワード>」または「net user <ユーザー名> <パスワード> /domain」を使う。
画面2● Windows XP上で、「net user test1 /delete /domain」コマンドで、test1ユーザーをドメインから削除
特にユーザーが自分のパスワードを忘れて管理者に泣きついてくることが頻繁にあるので、管理者ならパスワードの変更方法を覚えておこう。このコマンドでパスワードを明示的に指定する代わりに、「*」を指定する手もある。この場合はパスワードの入力を促すメッセージが表示されるので、適当なパスワードをキー入力する。そのパスワードは画面に表示されないので、しっかり控えておこう。
画面3● Windows XP上で、「net user test1 * /domain」コマンドで、test1ユーザーのパスワードを対話的に変更
net userコマンドでは、この他に数多くのオプションが使用可能だが詳細はリファレンスを参照されたい。ただ「/active」オプションだけ説明しておこう。
ユーザーがパスワード入力を何度か間違えたためにロックアウトされてログオンできなくなったと泣きつくこともよくある。一度ロックアウトされると、一定時間後にならないとログオンできない。その場合は「net user <ユーザー名> /active:yes」または「net user <ユーザー名> /active:yes /domain」でロックアウトを解除することができる。ネットワーク管理者ならよく使うことになるので覚えておこう。
---------------------------------------------------------------------------
ユーザーのグループを操作したい!
net group/net localgroup
---------------------------------------------------------------------------
>ユーザーの所属グループを変更
「net user」コマンドのところで書いたように、「net user /add」または「net user /add /domain」コマンドで追加されるユーザーは制限ユーザーになる。こうしたユーザーを別のグループに追加あるいは削除したい場合は、「net group」あるいは「net localgroup」コマンドを使う。
「net group」コマンドはドメインのグローバルグループを、「net localgroup」コマンドはローカルグループを操作するときに使う。なお、クライアントコンピュータ上で「net localgroup /domain」コマンドを使うと、クライアントコンピュータのローカルグループではなくドメインコントローラのローカルグループを操作することになる。
画面4● Windows XP上で「net localgroup /domain」コマンドを実行した結果
「net user」コマンドのところで解説した複数ユーザーを追加するバッチファイルを少し修正して、作成された制限ユーザーを「Power Users」グループに追加する場合は次のようになる。
@echo off
net user <ユーザー1> /random /add
net localgroup “Power Users” <ユーザー1> /add
net user <ユーザー2> /random /add
net localgroup “Power Users” <ユーザー2> /add
「net group /add」コマンド、あるいは「net localgroup /add」コマンドでは複数のグループやユーザーを同時に指定できる。したがって、上記のバッチファイルはつぎのように書くこともできる。
@echo off
net user <ユーザー1> /random /add
net user <ユーザー2> /random /add
net localgroup “Power Users” <ユーザー1> <ユーザー2> … /add
その他に、「net group」コマンド、「net localgroup」コマンドでは、新規グループの作成・削除、グループへのユーザー/グループの追加・削除、コメントの付与、グループに属するユーザー/グループの表示ができる (詳細はリファレンスを参照)。
なお、コントロールパネルのGUI画面で細かな設定ができないWindows Xp Home Editionの場合も、「net user」コマンドや「net localgroup」コマンドを使うことができる。ただし、Home Editionではドメインに参加できないのと、Power Usersなどの組み込みグループが存在しないため、実際にはそれほど役にはたたないだろう。
今月のコマンドレファレンス
net user
ユーザーアカウントを追加、修正、削除、あるいはユーザーアカウント情報を表示する。"net users" と入力することもできる。
[構文1] ユーザーの変更
net user [UserName [Password | *] [options]] [/domain]
[構文2] ユーザーの追加
net user UserName {Password | *} /add [options] [/domain]
[構文3] ユーザーの削除
net user UserName /delete [/domain]]
[パラメータ]
UserName
追加、削除、修正、または表示するユーザーアカウントの名前を指定する。ユーザーアカウントの名前は、半角で20文字以内。
Password
ユーザーアカウントのパスワードを割り当てるか、または変更する。パスワードのプロンプトを生成するには、アスタリスク (*) を入力する。
注 : パスワードは、net accounts /minpwlenで設定された最小の文字数を満たしていなければならない。最大で127文字以内。ただし、Windows 9xでは14文字以上のパスワードがサポートされていない。/randomと指定すると自動的に8文字のランダムなパスワードを生成する。
/domain
プライマリドメインコントローラでこの処理を実行する。
options
コマンドラインオプションを指定する。利用できるオプションは次のとおり。
/active:{no | yes}
ユーザーアカウントを有効または無効にする。既定値はyes (有効)。
/comment:"text"
ユーザーアカウントに関する説明のコメントを指定する。コメントは48文字以内。テキストは二重引用符で囲む。
/countrycode:nnn
ユーザーのヘルプおよびエラーメッセージに国/地域コードで指定した言語ファイルを使う。値0は既定の国/地域コード。
/expires:{{mm/dd/yyyy | dd/mm/yyyy | mmm,dd,yyyy} | never}
ユーザーアカウントの有効期間を設定する。有効期間は国/地域コードに応じて、[mm/dd/yyyy]、[dd/mm/yyyy]、または[mmm,dd ,yyyy]の形式で設定できる。アカウントの有効期間が指定した日付に達すると切れる。月の値は、数字、英単語、または3文字の短縮形 (Jan、Feb、Mar、Apr、May、Jun、Jul、Aug、Sep、Oct、Nov、Dec) を使用できる。年の値は、2桁または4桁の数を使用できる。日付は、カンマまたはスラッシュで区切り、スペースは使用できない。yyyyを省略すると、日付の次の出現が (つまり使用しているコンピュータの日付と時刻に従って) 想定される。
/fullname:"name"
ユーザーのフルネーム (ユーザー名ではない) を指定する。名前は二重引用符で囲む。
/homedir:Path
ユーザーのホームディレクトリのパスを指定する。指定するパスは存在していなければならない。
/passwordchg:{yes | no}
ユーザーが自分のパスワードを変更できるかどうかを指定する。既定値はyes。
/passwordreq:{yes | no}
ユーザーアカウントにパスワードが必須かどうかを指定する。既定値はyes。
/profilepath:[Path]
ユーザーのログオンプロファイルのパスを指定する。このパス名はレジストリプロファイルを指す。
/scriptpath:Path
ユーザーのログオンスクリプトのパスを指定する。Pathには絶対パスを使用できず、<システムルートディレクトリ名>\System32\Repl\Import\Scriptsの相対パス。
/times:{day[-day][,day[-day]],time[-time][,time[-time]][;... | all}
ユーザーがコンピュータを使える時間を指定する。timeは1時間刻みに制限される。dayの値は英単語かその短縮形 (M、T、W、Th、F、Sa、Su) を使用できる。時刻には12時間制または24時間制を使用できる。12時間制を使用する場合は、AM、PM、またはA.M.、P.M.を使う。値allは、ユーザーがいつでもログオンできることを意味する。NULL値 (空白) は、ユーザーがまったくログオンできないことを意味する。曜日と時刻はカンマで区切り、複数の曜日と時刻はセミコロンで区切る。時間の指定にはスペースは使えない。
/usercomment:"text"
管理者がアカウントに関する "ユーザーのコメント" を追加または変更できるようにする。テキストは二重引用符で囲む。
/workstations:{ComputerName[,...] | *}
ユーザーがネットワークにログオンするときに使えるワークステーションを8台以内で指定する。複数のコンピュータ名はカンマで区切る。/workstationsに何も指定しないか、またはアスタリスク (*) を指定すると、ユーザーはどのコンピュータからでもログオンできる。
<パラメータなし>
パラメータを指定せずにnet userを使うと、コンピュータのユーザーアカウントの一覧が表示される。
-----------------------------------------------------------------------------------------------------------------------------------------
net group
ドメイン内のグローバルグループを追加、表示、または修正する。グループに権利を割り当てると、そのグループの各メンバーには、自動的にその権利が与えられる。出力では、ユーザーとグループの両方を含むグループの前にアスタリスク (*) が付く。"net groups" と入力することもできる。
[構文1] グループの編集
net group [GroupName [/comment:"text"]] [/domain]
[構文2] グループの追加/削除
net group [GroupName {/add [/comment:"text"] | /delete} [/domain]]
[構文3] グループにユーザーを追加/削除
net group [GroupName UserName[ ...]{/add | /delete} [/domain]]
[パラメータ]
GroupName
追加、修正、または削除するグループの名前を指定する。
/comment:"text"
グループに対してコメントを追加する。コメントは最大48文字までで、テキストは二重引用符で囲む。
/domain
ドメインコントローラ上でこの処理を実行する。このパラメータがない場合はローカルコンピュータ上で処理を実行する。
/add
グループを追加、またはグループにユーザーを追加する。追加するユーザーはすでに作成されている必要がある。
/delete
グループを削除、またはグループからユーザーを削除する。
UserName[ ...]
グループへの追加またはグループからの削除の対象となるユーザー名を指定する。複数のユーザー名はスペースで区切る。
<パラメータなし>
パラメータを指定せずにnet groupを使うと、サーバーの名前とそのサーバー上のグループ名が表示される。
-----------------------------------------------------------------------------------------------------------------------------------------
net localgroup
ローカルグループを追加、表示、または修正する。
[構文1] グループの編集
net localgroup [GroupName [/comment:"text"]] [/domain]
[構文2] グループの追加/削除
net localgroup [GroupName {/add [/comment:"text"] | /delete} [/domain]]
[構文3] グループにユーザーを追加/削除
net localgroup [GroupName UserName[ ...]{/add | /delete} [/domain]]
[パラメータ]
UserName[ ...]
ローカルグループへの追加またはローカルグループからの削除の対象となるユーザー名またはグループ名を指定する。複数のユーザー名やグループ名は、スペースで区切る。指定できるのはローカルユーザー、ほかのドメインのユーザー、またはグローバルグループで、ほかのローカルグループは指定できない。別のドメインからのユーザーの場合には、ユーザー名の前にドメイン名を付ける (Sales\Ralphr)。
その他のパラメータは「net group」を参照。