- - PR -
非AD環境の Windows Server 2003 にユーザーアカウントを一括登録する方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-26 18:06
チャブーンです。はじめまして。
さて、もう答えはでているようですが、参考として旧来の net user を使ったコマンドを掲載しておきましょう。どこかの掲示板に私が投稿した過去ログですので、見たことがある方もいるかもしれません。 ---- ' For /F 文で CSV ファイルから該当文字列を変数代入し、 ' net user コマンドで利用する ' CSV ファイルには 1列ごとに アカウント名,パスワード,フルネーム ' とすること For /F "tokens=* delims=," %%i in (UserData.csv) Do ( net user %%i %%j /add /Fullname:%%k /domain ) ---- これをバッチとして保存し、同じディレクトリ UserData.csv を所定の方法で書いておくことで、うまくいくと思います。詳細が知りたい場合、For /? から文法を押さえておくと、応用がききますね。 | ||||||||||||
|
投稿日時: 2006-11-27 11:30
チャブーン様、ご助言ありがとうございます。
UserData.csvを用意して試してみたのですが、うまく登録されませんでした。 再度コマンドプロンプトから実行してみたところ「%%i」の使い方が誤っているという メッセージが出たので「%%i」から「%i」に変更して実行してみましたところ 次のメッセージになりました。 'CSVファイル Username,Password,フルネーム
表題の件は解決しておりますが、後学の為にご助言いただけると助かります。 | ||||||||||||
|
投稿日時: 2006-11-27 14:47
チャブーンです。
> 再度コマンドプロンプトから実行してみたところ「%%i」の使い方が誤っているという > メッセージが出たので「%%i」から「%i」に変更して実行してみましたところ > 次のメッセージになりました。 まず、"%" の使い方ですが、単にコマンドプロンプトで実行する場合は % ですが、バッチファイルに記載する場合は、そのままでは特別な文字として (意図されたように) 認識されません。この場合 %% とすることで、コマンドプロンプトで % とするのと同じようになります。このコードはバッチファイル (.bat) に記載する前提で書いてあります。 > '結果 > C:\test>(net user Username,Password,フルネーム %j /add /Fullname:%k /domain ) > このコマンドの構文は次のとおりです: これは、私の間違いです。スクリプトがドメインコントローラに適用させる前提で書いてあったことを忘れていました。以下の内容で大丈夫だと思いますよ。 ---- ' For /F 文で CSV ファイルから該当文字列を変数代入し、 ' net user コマンドで利用する (ワークグループ) ' CSV ファイルには 1列ごとに アカウント名,パスワード,フルネーム ' とすること For /F "tokens=* delims=," %%i in (UserData.csv) Do ( net user %%i %%j /add /Fullname:%%k ) ---- | ||||||||||||
|
投稿日時: 2006-11-27 15:35
チャブーン様、引き続きのご助言ありがとうございます。
これは大変失礼しました。 コマンドで確認するなら %% を % に変更して良かったのですね。
ご提示いただいたコマンドをそのままbatファイルにして、CSVと同じディレクトリから 実行したところ(c:\test\)やはりうまく登録ができませんでした。 一瞬表示されるコマンドプロンプトの画面をスクリーンショットに取ってみたところ 以下のようなメッセージが表示されておりました。
テストに Windows XP SP2 を使用しているのが問題だったりするのでしょうか。 | ||||||||||||
|
投稿日時: 2006-11-27 16:14
チャブーンです。
> ご提示いただいたコマンドをそのままbatファイルにして、CSVと同じディレクトリから > 実行したところ(c:\test\)やはりうまく登録ができませんでした。 > 一瞬表示されるコマンドプロンプトの画面をスクリーンショットに取ってみたところ > 以下のようなメッセージが表示されておりました。 ふむ。内容から、本来 "," を区切りに変数をそれぞれ読み込まなければいけないところ、"Username,Password,フルネーム" がひとつの値として読み込まれてしまってますね。 私のコードに問題があります。手直ししますので、しばしお待ちください。。。 | ||||||||||||
|
投稿日時: 2006-11-27 16:38
チャブーンです。
まったくしょぼいデバッグで申し訳ない。いかでよいはずです。 ---- For /F "tokens=1-3 delims=," %%i in (UserData.csv) Do ( net user %%i %%j /add /Fullname:%%k ) ---- ただし、CSV ファイルでフルネームで設定するとき、姓と名の間にスペースがあるなら、"(ダブルクォーテーション) でくくらないと失敗します。設定項目が増やしたいなら、%%変数と tokens= 設定を変更すればいいでしょう。 | ||||||||||||
|
投稿日時: 2006-11-27 17:04
チャブーン様、お付き合いくださってありがとうございます。
ご提示いただいたコマンドで正常に登録できました。 後は、「ユーザーはパスワードを変更できない」「パスワードを無期限にする」等の オプションを有効にする方法を少し模索してみたいと思います。 最後までお付き合いくださってありがとうございました。 | ||||||||||||
|
投稿日時: 2006-12-05 03:57
チャブーンです。
最後までしょぼい回答で、申し訳ないですが。 > 後は、「ユーザーはパスワードを変更できない」「パスワードを無期限にする」等の > オプションを有効にする方法を少し模索してみたいと思います。 残念ながら、「パスワードを無期限にする」オプションについては設定できません。これは単に net user コマンドで設定項目がないためです。これ以外にもいくつかの項目は net user コマンドでは設定できないので、ユーザアカウントとパスワードのすべての項目を設定したいときには、ADSI スクリプト (WinNTプロバイダ) で対応することになりますね。 ADSI が敷居が高いと感じる人も中にはいるので、要件があえばいかが?程度のご紹介でした。 |