• ベストアンサー

NET USE をVBSで

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

  • OJI-
  • お礼率80% (4/5)

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

  • ベストアンサー
  • 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

  • VBS でDOSのNet useについて

    VBS内で DOSコマンドの net use * /delete を実行すると 必ずNで実行結果となってしまいます DOS窓ではキーボードでyをいれればいいのですがこの「y」をVBSで渡す方法が見つかりません。 いろいろ試しているのですが・・・どうにもうまくいきません。 OSはWindows7です -----------作成例 ある程度まではできたのですが  Dim objShell Dim wExec Dim sCmd0 Dim sCmd1,sCmd2,sCmd3 ' コマンド生成 sCmd0 = "net use" sCmd1 = "net use * /delete" sCom2 = "net use /persistent:yes" sCmd3 = "net use X: \\PC\skyhd108" ' objのセット Set objShell = CreateObject("WScript.Shell") ' コマンド実行 Set wExec = objshell.Exec("%ComSpec% /c " & sCmd1) Set wExec = objshell.Exec("%ComSpec% /c " & sCmd3) Set wExec = objshell.Exec("%ComSpec% /c " & sCmd2) Set wExec = objshell.Exec("%ComSpec% /c " & sCmd0) Do While wExec.Status = 0 Loop Result = wExec.StdOut.ReadAll MsgBox Result WScript.Echo "お疲れ様でした!" Set wExec = Nothing Set objShell = Nothing

  • net useでネットワークドライブを割り当てたいのですが。。

    ネットワークドライブをGUIにて割り当てる際には、「ログオン時に再接続」し、パスワードを保存することができると思います。 これをGUIでなくバッチファイルで実行する必要があるのですが、net useコマンドで行うとエラーになります。 net use z: \\xxx.xxx.xxx.xxx\\work /user:Administrator passwd /savecred /persistent:yes[Enter] コマンドが矛盾するスイッチで使用されました。 NET HELPMSG 3510と入力すると、より詳しい説明が得られます。 /persistentはなくてもエラーは変わらないため、/savecredのせいだと思うのですが、どうすれば指定できるのでしょうか? 宜しくお願いします。

  • net useコマンドでミス

    LinuxのSambaサーバーにユーザーを切り替えてログインするために、 net use コマンドを以下のように入力してしまい、(i36ffはログインユーザー名) net use /delete i36ff Windowsのi36ffユーザーにアクセスできなくなってしまいました。 デスクトップのデータやMyDocumentは生きているようですが どうやっても削除したユーザーにログインできません。 どなたか状況を打開し、以前のようにこのユーザーを使える方法を知りませんか? どうか知識のご教授をお願いします。よろしくお願いします。

  • net use の「利用不可」について

    Windows2003 Server(ServerA)にて、管理者ユーザー(User1)でログインします。 コマンドプロンプトで、他のWindows2003 Server(ServerB)にnet useコマンドで、共有ドライブ(接続ユーザーは管理者権限のあるUser2)を設定します。 net use X: \\ServerB\data password /user:User2 この状態で、一度、ログオフをして、再度User1でログインして、このnet useの共有ドライブの状況を確認すると、ステータスが「利用不可」となっていて、共有ドライブが利用できません。 これは、Windowsの仕様でしょうか?回避するには、User1でnet useを行わないとダメなのでしょうか?

  • net useコマンド

    共有ドライブ    : \\公開フォルダ\【tool】 ログオンユーザー名 : admin ログオンユーザーのパスワード : password 設定ドライブ    : なし OS        : Windows2000 及び WindowsXP 置換ファイル名   : 顧客DB.mdb パッチファイルの作成をしたいと考えています。 パッッチ処理の内容は、net useコマンドにて共有フォルダへパスワードを自動入力し接続させます。そしてrplace コマンドの実行をしたいと考えています。可能であればreplaceコマンドの記述方法についても ご教授頂ければとても幸いです。 replaceさせたいのは、net useコマンドにて接続したネットワークディレクトリ内のファイルとローカルのデスクトップ上にあるファイルとを 比較し、デスクトップ上のファイルが古い場合には最新のファイルに置換をしたいと思っています。 まだまだ初心者のため、コマンド集のサイトを見たのですが分かりませんでした。 御存知の方、よろしくお願いします。

  • NET USE のBATが動作しない

    VISTAのコマンドライン上でたとえば次のように記述してやるとネットワークドライブにマウントできるのですが、これをアイコンで処理したいとBATにするとうまく動作しません。何か書式みたいなのがあるのでしょうか?例, net use g: \\hogehoge\1 /user:test password BATとしてVISTAで実行するとダダーってこの文字がコマンドラインで流れるのみです。ぱっと動作してくれてすぐ消えてくれればいいのですが・・。

  • net useコマンドについて

    net useコマンドについて質問させていただきます。 net use ドライブ名: \\サーバ名\共有名を実行すると、「'サーバ名'のユーザ名を入力してください」と表示される場合とされない場合があります。 表示されるケースの方が少なく、表示させたくないのですが、どこの設定でこの表示がされてしまうのでしょうか? サーバはWindows 2008 Server net use実行端末はXPです。 よろしくお願いします。

  • net useコマンド

    共有ドライブ    : \\192.168.1.1\file ログオンユーザー名 : admin ログオンユーザーのパスワード : adminps 設定ドライブ    : o OS        : Windows2000 及び WindowsXP net useコマンド1回接続させ、毎回パスワードを入力しなくとも接続出来る様にしたいと思い、コマンド集のサイトを見たのですが分かりませんでした。 御存知の方、よろしくお願いします。

  • NET USEコマンドがエンドレスで終了しない

    どうぞご教授願います。 XP HomeEditionをワークグループで使用するのにメインマシンのHDDを共有しています。 その際にXP-Heのマシンでnet useコマンドをネットワークドライブにしてるのですが、 先日何かを間違ったようで、コマンドをbat処理するとエンドレスにコマンドが実行されて終了しません。 画面は同じコマンドが永遠にスクロールされるだけで、ネットワークドライブも出来ません。 何か復旧の方法はありますでしょうか? そのコマンドファイルのプロパティで見ても問題が無く、同じコマンドファイルを別のマシンで実行したらきちんと終了します。 コマンドプロンプトがきちんと終了しないか、net useコマンドが保持するようなイメージなのですが、 何か良き対応策はありませんか? お手数ですが宜しくお願いいたします。

  • net use コマンドについて

    net useコマンドを使ってネットワーク上にあるサーバのディスクをマウントしたいのですが、/?を出しても、使い方がいまいち分かりません。 具体にはクライアントから、Serverというサーバ名で(loginidというログインID passwordというパスワードが設定されていて、ドメイン名はdomain)C$をXドライブにマウントしたく以下を 実行したのですが、エラーで返されてしまいます。 net use x: \\server\c$ password /USER domain loginid 何度か試しているのですが、どこが間違っているのか分かりません。 正しいやり方を教えて下さい。 宜しくお願いします。

専門家に質問してみよう