気まぐれSE日記

地方でエンジニアしてます

Windows7でドライブマップ(2)


Windows7のマシンを借りて検証を行ってみました。


先日の調査ではよくわかっていませんでしたが、やはり、ドライブマップのスクリプトが原因
整理すると次のように書いてあるドライブがマップされないことがあるようです。


ダメな書き方

sambaでユーザ追加するときに、ログオンスクリプトの指定ができる(pdbeditで設定・確認可能)のですが、そのときのスクリプト指定は

「map.bat ユーザID」 となっていてスクリプトの第一引数にユーザIDが入るようになっていた。


そして、肝心のスクリプトには


net use S: /DELETE
net use S: \\sambaサーバのホスト名\%1

となっていて %1でユーザIDが入るようになっている

ログオンしたときにこれが実行されるはずなんだけどたまにうまくいかない。
何回かログオン繰り返すと見える。


このような書き方だと、上記のスクリプトを手動で実行する場合%1の部分を指定しないので
エラーとなり、その前処理の/DELETEだけ実行されるのでこのドライブは消える訳ですがこの辺のタイミングの問題なのか..。


良い書き方

Windows7ではこのように書いておけばOKで、多分Vista/XPでも問題なさそうです。


net use S: /DELETE
net use S: %LOGONSERVER%\%USERNAME%

これだと、スクリプトを手動実行してもドライブが消えたりする問題は発生しません。


追記1:
→後日、これでもダメらしい。原因はわからんWindowsの中の人に聞くしかなさそうだ。

追記2:
スクリプトをこのようにしてドライブマップの前に数秒間待つようにしてみた

net use S: /DELETE

ping -n 5 適当なホスト名 > nul

net use S: %LOGONSERVER%\%USERNAME%

今のところこれで文句は言われてないけど、何でこんな処理しないとダメなのか...。どうなってんだろうWin7