2006年06月05日

バッチファイル

色々片が付いてきたので、今日はバッチファイルにチャレンジしました。

サーバへのユーザ登録の件です。前回から既に一ヶ月が経っていました。明日の授業準備は6時までに終え、そこから気合いを入れて取り組みました。この後にやることがあることを考えると順番としてそろそろユーザ登録にけりを付けなければ行けません。

仲間の t_fukuhara さんに言わせれば、それは教員の仕事ではない、業者にやらせるべき、ということでしょう。全くその通りです。ですが、今年はごたごたした中で年度が始まってしまい、予算も取れず、待っていられないのです。業者に頼むにはそれなりの段取りが必要ですから。

さて、私が参考にしているバッチファイルは基本的にこちらのものです。いえ、全くそのまま使っています。しかし、思ったようにならないのです。

前回お伝えしたとおり、ユーザは追加されます。またパスワードの件は私の勘違いでした。ちゃんとできます。

ユーザ名
パスワード
ログオンスクリプト
プロファイルパス

まではきちんと設定した csv を読み込んで設定してくれます。

問題は所属グループです。

このバッチファイルの解説を読むと「:」(半角)で区切って所属グループを複数並べると、それらのグループにはいることになっています。しかし、「そんなグループはない」というメッセージが出てしまいます。でも「Domain Users」にだけは入っています。

私の作成した csv ファイルはこんな感じです(仮のものですが)。

"2","A","1","s170001","テスト太郎","H000","logon.bat",
"\\w2kserver\Profile\STUDENT\Default",
users:students:SW_G5030
(↑本当は1行です)

意味は、
2年A組1番
ユーザ名:s170001
表示名:テスト太郎
パスワード:H000
ログオンスクリプト:logon.bat
ユーザプロファイル:\\w2kserver\Profile\STUDENT\Default
所属グループ: users,students,SW_G5030

というものです。バッチファイルでは最初の3つは捨てていますので「2年A組1番」は関係ありません。最初に作るときこちらが間違えないように、ということです。その後の項目は最後以外すべてきちんと入ります。良くできています。

このバッチファイル(群)は、

adduser.cmd を起動すると「user.csv」を読み込み、
1行分を切り分けた後そこから adduser2.cmd を呼び出し、
そこでほとんどのコマンドを実行したら、
さらにグループを切り分けて adduser3.cmd を呼び出す

という構造になっています。

試しに、オリジナルを取っておき、ほとんどを削除して、ループの部分だけにしてみました。また所々「echo」文を入れて、今どこを実行しているのかわかるようにしてみました。

その結果分かったことは、複数のグループのうち最初の「users」しか読み込んでいないのです。

ん? だから「Domain Users」にだけは登録されたのでしょうか。でもだったらなぜ「グループが存在しない」というエラーメッセージが表示されるのでしょうか。

その後いろいろやってみて分かったことは、ユーザを追加するとデフォルトで「Domain Users」グループに必ず入るということでした。そしてそれは「Domain Users」というのが正しいグループ名で「users」は間違いなのです。

ActiveDirectory 的には「(ドメイン名)/users」が「Domain Users」グループの位置だったので勘違いしていたのです。だからそんなグループは無い!と怒られるのです。試しに「users」を削除してみると、ちゃんと2番目だった「students」グループに入るではありませんか。でもやはり3番目の「SW_G5030」グループには入りません。しかし、エラーメッセージは無くなりました。

あとは、なぜ複数のグループに所属されないのかという問題です。コマンドプロンプトから「for /?」としてヘルプを表示させると、

既定では、/F は、各ファイルの各行から、空白で区切られた最初のトークンを渡します。


という一文が見られます。「各」とあります。もしこれが事実なら、複数並んだグループを区切ることはしても、adduser3.cmd を一度呼び出した段階で次の行に行ってしまうので(1行しかないのでそこで終わり)、最初の一つしか有効ではないことになります。

何となく見えてきましたが、解決方法ではありません。今日のところはここでおわりました。9時半になっていましたので帰ることにしました。
posted by n_shimizu at 23:59| Comment(2) | TrackBack(0) | server