• ベストアンサー

NET USE をVBSで

初めて質問させていただきます。よろしくお願いいたします。 現在、下記のコマンドと同じ処理をVBSで実現させたく考えておりますが知識が無く困っております。 net use \\node1\share1 /user:oji passwd 大変勝手なお願いなのですが、自分で勉強する時間がないので、ズバリのご回答頂けないでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

一応VBSでドライブの割り当てをチェックしてから割り当てるサンプルプログラムを作ってみました。 注:他のユーザ名で既に何処かの共有フォルダを使用している場合は、複数のユーザー名が使えないというエラーになります。その場合は、他のユーザー名での接続を切断する必要があります。 '空いているドライブ名にネットワークドライブを割り当てる dim objFs, objNet, DriveLetter, Drive dim i Set objNet = WScript.CreateObject("WScript.Network") Set objFs = WScript.CreateObject("Scripting.FileSystemObject") DriveLetter="DEFGHIJKLMNOPQRSTUVWXYZ" for i=1 to Len(DriveLetter) Drive = Mid(DriveLetter,i,1) if not objFs.DriveExists(Drive) then '指定したドライブが見つからない Drive = Drive & ":" exit for end if next if Len(Drive) = 1 then WScript.Echo "割り当てるべきドライブ名の空きがありません" WScript.Quit(1) end if 'WScript.Echo Drive objNet.MapNetworkDrive Drive, "\\2000Server\share1",,"oji","ojipassword" if objFs.FileExists(Drive & "\Target1.dat") then WScript.Echo "YES" '実際の処理を書く end if objNet.RemoveNetworkDrive Drive

OJI-
質問者

お礼

ありがとうございました。 おかげさまで解決できました。 やはり私の質問が説明不足でお手数をおかけしたみたいで申し訳ございませんでした。 以後気をつけますので機会がございましたら、今後ともよろしくお願いいたします。 また、別のカテゴリーになると思いますが恩返し出来るよう皆さんのご質問にも答えられるよう努力してみます。 ありがとうございました。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>しかし\\2000Serverはドメイン外でローカルには“oji”というアカウントはあるが、クライアント使用者の個別アカウントは無いのでみんなで“oji”を使用し接続したい。 >そこで、“net use \\node1\share1 /user:oji passwd” >を実行後、上記のファイルにアクセスさせる事にしたが、98ではNETコマンドで/userスイッチが使えなかったので なるほど、 #3で言ってることと矛盾するように思われるかもしれませんが、 使用許可がなければ、直接はアクセスできませんね。 しかも、言われるとおり、98(95系)では、ユーザ指定してのNET USEができないので、#1の方法は多分使えませんね。 やはり、MapNetworkDriveを使うしかないと思います。(ネットドライブの解除にはRemoveNetworkDriveを使います) サーバーの方で個別にユーザーを登録することができないのなら、98側で(立ち上げ時に)ojiでログインさせるという方法もあるかと思いますが、それもなかなか面倒ですよね。 特に問題なければ、該当共有フォルダでのアクセスにゲストを許可しておけば、ネットドライブを作成すること無しにアクセスできると思います。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>ところでターゲットとなるリモート共有フォルダをマウントせずに実現させる事は無理なのでしょうか? >最後にアンマウントすればOKなのですが・・・。 >素人考えで恐縮なのですが、もし可能なら空きドライブを探したりするコードとか必要無いような気がしますが如何でしょうか? NET USE自体がネットドライブを作るコマンドなので、ネットドライブを作成せずにファイルやフォルダのアクセスができるか? という質問なのだと思いますが、 \\ホストPC\共有フォルダ\…以下の指定でファイルやフォルダが特定できればネットワークドライブを作らずに直接操作できます。 なので、VBSとしては、ネットワークドライブを作らなくていけない理由はありません。 蛇足ですが ネットワークドライブを作らなくてはならないような場合とは、それで、今までのソフトが(ドライブ名を指定して動くようなソフト)そのまま動くとか ¥¥から始まるファイル名に対応していないソフトを使うとかそういう場合に必要になります。

OJI-
質問者

お礼

>NET USE自体がネットドライブを作るコマンドなので・・・ なるほど、そうだったんですか。 理解しました。ありがとうございます。 >ネットドライブを作成せずにファイルやフォルダのアクセスができるか? まさにその通りです。最初の質問で何を目的としているのかを具体的に書くべきでした。今更ながらで大変申し訳ないのですが、説明させていただきますと、 \\2000Server\share1\Target1.dat 上記のような特定のファイルにWin98や2K、XPからユーザID、パスワード入力なしで出来ればネットワークドライブも作らずにアクセスさせたい。 しかし\\2000Serverはドメイン外でローカルには“oji”というアカウントはあるが、クライアント使用者の個別アカウントは無いのでみんなで“oji”を使用し接続したい。 そこで、“net use \\node1\share1 /user:oji passwd” を実行後、上記のファイルにアクセスさせる事にしたが、98ではNETコマンドで/userスイッチが使えなかったので、VBSにすれば目的は達成できるのではないか? と考え本件の内容で質問するにいたりました。 ひょっとしたらこの説明が無かった為に皆さんの貴重なお時間を無駄にさせてしまったかもしれません。 また全角100文字にも収められませんでした。 この場をお借りしてお詫び申し上げます。 申し訳ございませんでした。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

ほぼ同等なコマンドは以下になります Dim WshNetwork Set WshNetwork = WScript.CreateObject("WScript.Network") WshNetwork.MapNetworkDrive "E:", "\\node1\share1",,"oji",password ドライブ名は空いているドライブを指定する必要があります。 ドライブ名が存在しているかどうかはFileSystemObjectのDriveExistsメソッドで調べることができます。 passwordは、埋め込む必要があります。 実行時に入力させるには、InputBoxを使います。 InputBoxを使った場合、入力された文字が見えてしまいますので、非表示にしたい(あるいは*に置き換えたい)と言う場合には、オートメーションオブジェクト(ActiveX)などを作成する必要があります。 ソースに書き込んでそれを隠蔽したい場合は、エンコーダーを使えば暗号化できます。

OJI-
質問者

お礼

御礼が遅くなり申し訳ございません。 ありがとうございました。 私のレベルではご教示頂いた内容を試すには、やはり勉強しないと駄目みたいです。 時間が許す限りがんばって勉強します。 ところでターゲットとなるリモート共有フォルダをマウントせずに実現させる事は無理なのでしょうか? 最後にアンマウントすればOKなのですが・・・。 素人考えで恐縮なのですが、もし可能なら空きドライブを探したりするコードとか必要無いような気がしますが如何でしょうか?

回答No.1

set WshShell = WScript.CreateObject("WScript.Shell") WSHShell.Run "net use \\node1\share1 /user:oji passwd"

OJI-
質問者

お礼

御礼が遅くなり申し訳ございません。 早速、連休明けにでも試してみます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう