- - PR -
端末のネットワークドライブについて
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-19 17:42
方法がわからず投稿させていただきます。
ネットワークにつながっている端末上で、その端末にどのネットワークドライブがいくつマッピングされているか?ということを探し出す方法をご存知の方いらっしゃいますか? たびたびネットワークドライブの接続質問がくるのでなんとかしたいと考えています。 ポリシーのログオンスクリプトに、batファイルをかませるのは負荷がかかるのでやめました。 ご存知であれば教えていただきたく思います。 | ||||||||||||||||
|
投稿日時: 2006-01-19 18:40
こんばんわ.
command prompt で net use とやると, mount している network drive の一覧が表示されます. 逆に computer の管理 ->「システムツール」->「共有フォルダ」を参照すると, remote から接続している内容を確認できます. 以上,ご参考までに, | ||||||||||||||||
|
投稿日時: 2006-01-20 10:03
kazさん、返答ありがとうございます。
質問内容が良くなかったです。 例えばサーバー等でshareしているフォルダは、kazさんの方法でわかります。 これと似ていますが、サーバー上でshareしているフォルダは端末でマッピング可能です。しかしユーザーは既に適当にマッピングしています。それをこちらの意図するドライブにするために端末上でどのサーバーのどのドライブがマッピングされているのかを調べたいのです。このようなbatを仕込めばこちらの意図するネットワークドライブを当てられますが・・・・ net use e: /delete net use f: /delete net use g: /delete . . . net use z: /delete net use i: \\<server-name>\<share> net use j: \\<server-name>\<share> これではあまりにも強引なので端末を特定できればと思います。 たびたびですが教えていただきたくお願いします。 | ||||||||||||||||
|
投稿日時: 2006-01-20 23:25
こんばんわ.
net use /delete で全部いっぺんに削除できませんでしたっけ? ※うろ覚えですので間違っていたらゴメンナサイ.
端末を特定することは困難だと思います. なぜならそれは「各端末側の都合」で mount されるので. つまり各端末側で調べる必要があると思います. Active Directory を利用されているなら, logon script で net use とやった内容を text に redirect するなどして, それをさらに server で回収するとか... もっともそれをやるくらいなら, 「logon script で然るべく mapping するからその内容に即して運用してください」 と規定を作るべきだとは思いますが. いずれにせよ,logon script を利用して, logon 時にその端末 local で実行させて, その結果を server 送り込むくらいのことは可能だと思います. remote から「何とかする」よりも現実的では? 以上,あくまでもご参考までに. | ||||||||||||||||
|
投稿日時: 2006-01-21 02:45
それは NET SHARE の方では?
これはその Client 上で動かさないと無理ですね。 ただ、WMI Script を使用してやれば、Remote からでもその端末の情報を取ってくることは可能です。 # 内部的には、Client 側で実行されて結果を返しているわけですが・・・ 具体的には、Win32_LogicalDisk という Class があるのでそいつに対して、 こんな Query を投げてやればいいでしょう。 SELECT DeviceID, ProviderName FROM Win32_LogicalDisk WHERE ProviderName IS NOT NULL 詳細は、Script Center とか WMI に関する Site でお勉強ください。 なお、Client で直接実行するのであれば、WshNetwork.EnumNetworkDrives Method を 利用したほうが楽でしょうね。 | ||||||||||||||||
|
投稿日時: 2006-01-21 11:46
こんにちは 私も同様に考え以下の様なスクリプトを作ってみてたのですが、 ローカルPCに対しては固定ドライブおよびネットワークドライブが取得できました。 しかし、リモートPCに対しては固定ドライブしか取得できません。 何故ですかね・・・。 ちなみに条件をWHERE ProviderName IS NOT NULLにしても結果は同じようでした。 Dim Disks Dim Disk Dim Locator Dim Service Dim MsgStr Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator") 'ローカル用 'Set Service = Locator.ConnectServer 'リモート用 Set Service = Locator.ConnectServer("PCName",,"UID","PWD") '固定ドライブ 'Set Disks = Service.ExecQuery("Select * From Win32_LogicalDisk where DriveType=3") 'ネットワークドライブ Set Disks = Service.ExecQuery("Select * From Win32_LogicalDisk where DriveType=4") For Each Disk In Disks MsgStr = MsgStr + Disk.Name Next MsgBox "ドライブは、" + vbCrLf + MsgStr + "です。" | ||||||||||||||||
|
投稿日時: 2006-01-21 14:05
こんにちわ.
そうですね.
自分もこの手の内容は「client 側で調べるしかない」と思います. client 管理の為の agent などを利用するとか... ちょっと思いついたのですが, logon script って standalone な Windows では使えませんでしたっけ? もし使えるなら,ちょっと手間ですが logon script を配って 「network drive の確認->text に redirect->server へ情報を収集」 の一連の処理をやらせることができないかと. ※low-tech ですね,なんとも... | ||||||||||||||||
|
投稿日時: 2006-01-22 22:25
すみません。こちらでも確認しました。 Bug か仕様かどちらにしても、いただけないですね。 ちなみに NetworkDrive に関する WMI Class Win32_MappedLogicalDisk ですが、 こちらは Remote からでも取得できるようです。 ただし、こちらにも問題があって、Map されている Path の格納されているはずの ProviderName Property に値が格納されていません。 How Can I Determine Which Drives are Mapped to Network Shares? なんで、別の手段をとらなければならないようです。 ということで最終手段。 Client 側で Network Drive を列挙する Script を作成して、 Win32_Process.Create Method から Remote 呼び出しを行えばできるでしょう。 ただし、いろいろ注意すべきことがあります。 Win32_Process.Create Method では、実行結果を返してくれません。 なので、実行結果は Text にでも Redirect するように作ってやります。 それから、これも厄介。 Win32_Process.Create Method は非同期呼び出しです。 なので、実行を待機する部分も自作してやらなければなりません。 具体的には、ExecNotificationQuery を利用して __InstanceDeletionEvent を 監視することになりますが、これもいろいろ問題が・・・ 終了が監視できれば、あとはその端末の Text を読み取ってやればよいでしょう。 # しかし、面倒ですね。 |