![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
社内のいくつかのサーバーの各ドライブごとの容量を調べたいのですが・・・。
(1)ドライブの数がトータルで40個くらいあります
(2)週に一度くらい確認しています
(3)各サーバーはネットワークでつながっています
上記のような状況のため、VBAなどで自動取得できないかと悩んでいます。
(現在はサーバのマイコンピュータを見て、リストに記入・・・とやっています)
VBAでネットワークドライブの割り当てを行い、容量を取得、その後割り当てを解除・・・という形で行おうと思ったのですが、
VBAで割り当てを行う方法がわかりません。
(FileSystemObjectでDriveのサイズは取得できます)
また、割り当てを行わずに容量を取得する方法があるのでしたらそれでもいいと思うのですが、調べても分かりませんでした。
できればファイルに結果を残したいので、エクセルかアクセスのVBAでできたらなぁと思っています。
(またスキルの面からも、VBAくらいしか使えません)
何か良いやり方があれば、教えていただけないでしょうか?
よろしくお願い致します。
*環境:windows2000・office2000
No.2ベストアンサー
- 回答日時:
>FileSystemObjectでDriveのサイズは取得できます
であれば、同じように
Set oWSHNet = CreateObject("WScript.Network")
oWSHNet.MapNetworkDrive "Z:", "\\SERVER1\DRIVE1" ',,"USER","PASSWORD"
で割り当てることができます。
ユーザー指定が必要な場合は、コメント解除して下さい。
解除する場合は
oWSHNet.RemoveNetworkDrive "Z:"
で解除できます。
ありがとうございますー。できました!!
1の方のDOSのコマンドと両方やってみたのですが、DOS窓がぴよぴよしないので、こちらで進めてみることにしました。
ただ、On Error Resume Nextを記載しても、ネットワークに接続できないと処理が止まってしまうのが困り者です・・・。
それでも、とっても時間が短縮できて満足です。
No.4
- 回答日時:
前述のリンク先は昨日見つけていたのですが、もうちょっと何とかしようとして
うまく行かず、とりあえずリンクだけ載せました。
当初 VBA内に記述しようと思ったのですが、結局 WSH と WMI が肝なので
こんな風になっちゃいました・・・。
☆ ユーザー名・パスワードの設定を何とかしたかったのですが妥協作です ☆
以下をコピーして、適当なファイル名.VBS で保存して試してみてください。
結果を教えてもらえると幸いです。Win2000以上のOSで動くとは思いますが?
↓ここから
On Error Resume Next
'リストアップされたマシンのディスク空き容量を調べます。
'各マシンでのサービス・マシンの管理者権限設定が必要。
'同一フォルダにDiskSizeLog.csvが出来ます
Dim srvName(10)
srvName(0) = "."'自PC
srvName(1) = "Server01"
srvName(2) = "dummy"
'てな具合に配列に入れる
Set objShell = CreateObject("Wscript.Shell")
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objNet = Wscript.CreateObject("Wscript.Network")
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Do Until srvName(i) = ""
If srvName(i) = "." Then
strComputer = objNet.ComputerName
Else
strComputer = srvName(i)
End If
Call execPart(strComputer)
If Err.Number = 70 Then'書き込み出来ない場合3回トライして諦める
Do until i>4
Wscript.Sleep 10 * 1000 + 5 * 1000 * Rnd
i = i + 1
Call execPart(strComputer)
Loop
Elseif Err.Number <> 0 Then
Call errSrv
End If
i = i + 1
Loop
rtnVal = objShell.PopUp("終了しました", 3)
Wscript.Close
Sub execPart(strComputer)
Set objTxtOut = _
objFso.OpenTextFile(objShell.CurrentDirectory & "\DiskSizeLog.csv",ForAppending,True)
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = 3")
For Each objDisk in colDisks
txtOut = Date & "," & _
"""" & strComputer & """," &_
"""" & objDisk.DeviceID & """," &_
objDisk.Size & "," &_
objDisk.FreeSpace
objTxtOut.Write (txtOut)
objTxtOut.Write vbCrLf
Next
objTxtOut.close()
End Sub
Sub errSrv()
Set objTxtOut = _
objFso.OpenTextFile(objShell.CurrentDirectory & "\DiskSizeLog.csv",ForAppending,True)
txtOut = Date & "," & _
"""" & strComputer & """," &_
"""" & "unKnown Err.No " & Err.Number & " " & Err.description & """," &_
0 & "," &_
0
objTxtOut.Write (txtOut)
objTxtOut.Write vbCrLf
objTxtOut.close()
Err.Clear
End Sub
No.3
- 回答日時:
ネットワークの構成や権限が分からないので・・・
ドライブの空き領域率を確認する方法はありますか
http://www.microsoft.com/japan/technet/scriptcen …
は参考になりませんか?
strComputer = "." を strComputer = "サーバー名" とすれば
各ドライブの容量を拾ってこれる『場合』もあります。
ご回答ありがとうございます。
これはVBSのコード・・・ということになるんですよね?
VBAだけでは結局無理って感じですね・・・。
ちょっとやってみたのですが、やっぱり参照設定とかいるんでしょうか?上手く動きませんでした。
まだまだ勉強しないといけないことがありそうです。
No.1
- 回答日時:
ドライブ割り当てのDOSコマンドは、”netuse”です。
これをSHELL関数で、実行すればいいでしょう。
空き容量は、参照URLを参考にしてください。
参考URL:http://www.moug.net/tech/acvba/0020001.htm
ご回答、ありがとうございます!
DOSはあまり使ったことがなくて、ちょっと四苦八苦しちゃいましたが、無事に割り当てができました!
(念のため、コードを貼っておきます)
Sub test()
Dim a
a = "NET USE Z: \\server\C$"
Call Shell("CMD.exe /c " & a)
a = "Net Use Z: /delete"
Call Shell("CMD.exe /c " & a)
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルが動かない
-
NASの空き容量を知るには、どう...
-
システムのHDD容量が大きい...
-
メールを削除しても、容量が増...
-
CD-Rで焼いたファイルが読めな...
-
ゴミ箱から削除してもディスク...
-
空のCD-Rを入れても空き容量0...
-
iPhone6sの1番容量が少ないのを...
-
LS150/RをSSD128GBへリカバリー
-
ウイルススキャン中にHDDの...
-
ローカメディスク(C) 使用領域...
-
いま、7.17GBあるんですが、あ...
-
ディスクの空き容量またはメモ...
-
ウイルスセキュリティゼロのア...
-
ゲーム用CD-ROMの容量って分か...
-
今年2月に買ったパソコンの容量...
-
ハードディスクの残り容量の調...
-
「取り消しています」が表示さ...
-
切り取り、貼り付けの途中でキ...
-
(OSなし)HDDを別のPCに移動させ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
NASの空き容量を知るには、どう...
-
ゴミ箱から削除してもディスク...
-
BD-R容量ギリギリまで書き込み
-
650MBと700MB
-
Google Drive (G:)の容量を、購...
-
システムのHDD容量が大きい...
-
容量は十分あるのにインストー...
-
外付けUSB接続のHDDは容量一杯...
-
エクセルが動かない
-
ローカルディスク(C)の空き容量...
-
i Tunesに曲を取り込めなくなった
-
データを削除するほど空き容量...
-
メールを削除しても、容量が増...
-
CD-Rで焼いたファイルが読めな...
-
WinAPI GetDiskFreeSpaceEx に...
-
ExcelかAccessのVBAでドライブ...
-
WINDOWS Server 2003 OSが肥...
-
空のCD-Rを入れても空き容量0...
-
黒い砂漠をインストールしたい...
-
Partition Magic 7,0 を使った...
おすすめ情報