
社内のいくつかのサーバーの各ドライブごとの容量を調べたいのですが・・・。
(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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- UNIX・Linux Linuxサーバーのパーティション・ディレクトリの推奨見積もりについて 3 2023/01/17 00:46
- ネットワーク syslog保存サーバーに蓄積するログファイル容量について 3 2023/01/09 20:13
- Visual Basic(VBA) Excel VBA ファイル取得について フォルダの中に、ファイル名“会議“を含むファイルが1つまた 9 2022/10/12 01:18
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Windows 10 新しく購入したWindowsパソコンのディスクの容量を変更しています。 Cドライブの容量が元々1TB 9 2023/08/09 16:39
- ドライブ・ストレージ HDDの未割り当て領域が認識されない 7 2022/11/27 18:51
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ゴミ箱から削除してもディスク...
-
システムのHDD容量が大きい...
-
パソコンの容量とネットの繋が...
-
CG制作でのSSDとHDDのバランス ...
-
BD-R容量ギリギリまで書き込み
-
ごみ箱のファイルを削除すると...
-
「取り消しています」が表示さ...
-
切り取り、貼り付けの途中でキ...
-
会社用のPCから私物のUSBにデー...
-
パソコンのCドライブをCとDに分...
-
◆HDDの搭載基数を調べる方法◆
-
PC98のハードディスクの読み込...
-
Cドライブの "Fujitsu" ファイ...
-
データのインポートって「(コピ...
-
コピーと移動の違い
-
システムで予約済み の領域を結...
-
新しいPCで古い外付けHDDが認識...
-
USB-SATA Bridgeとはなんですか?
-
【Win10】SSD(C:ドライブ)上...
-
パソコンガ起動しない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
NASの空き容量を知るには、どう...
-
ゴミ箱から削除してもディスク...
-
BD-R容量ギリギリまで書き込み
-
デスクトップPCのOS(C:)の空き...
-
データを削除するほど空き容量...
-
システムのHDD容量が大きい...
-
Google Drive (G:)の容量を、購...
-
外付けUSB接続のHDDは容量一杯...
-
DVD Shrinkについてお願いします
-
HDDの認識容量について
-
ハードディスクの容量を減らす...
-
650MBと700MB
-
メールを削除しても、容量が増...
-
黒い砂漠をインストールしたい...
-
エクセルが動かない
-
パソコンの空き容量
-
ローカルディスク(C)の空き容量...
-
i Tunesに曲を取り込めなくなった
-
PCが重いです。 5年くらい前に...
-
ImageMixer AVCHD規格でのディ...
おすすめ情報