Met wat VBA/VBscript kluswerk kom je een heel eind als het allemaal low-tech, low-cost moet blijven.
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
| On Error Resume Next
' ==============================================================
' constants
' ==============================================================
Const WbemAuthenticationLevelPktPrivacy = 6
Const HARD_DISK = 3
Const adOpenStatic = 3
Const adLockOptimistic = 3
' ================================================================
' vars
' ================================================================
strNamespace = "root\cimv2"
strDomain = "domain"
strUser = "administratoraccount@domain"
strPass = "duh"
strDate = FormatDateTime(Now(), 2)
strTime = FormatDateTime(Now(), 4)
' ===============================================================
' Open Db connection for update
' ===============================================================
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open _
"Provider = Microsoft.Jet.OLEDB.4.0; " & _
"Data Source = c:\temp\dfsdiskspace\diskspacedfs.mdb"
objRecordSet.Open "SELECT * FROM tbldiskspace" , _
objConnection, adOpenStatic, adLockOptimistic
' ================================================================
' list of cluster servers to be queried for info ,
' kan je ook uit een DB tabel trekken natuurlijk
' ===============================================================
arrComputers = Array("server1","server2","server3","server4","server5","server35")
For Each strComputer In arrComputers
' ================================================================
' authenticate using admin credentials on each server
' ================================================================
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer _
(strComputer, strNamespace, strUser, strPass)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
' ==============================================================
' Query each server for disks with volumename HD*
'( disknames start with HD, % is wildcard)
' ==============================================================
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colDisks = objWMIService.ExecQuery _
("SELECT * FROM Win32_LogicalDisk WHERE VolumeName LIKE 'HD%'",,48)
' ==========================================================
' query each disk per server for values and add to DB
' =============================================================
For Each objDisk in colDisks
objRecordSet.AddNew
objRecordSet("server") = strComputer
objRecordSet("domain") = strDomain
objRecordSet("disk") = objDisk.VolumeName
objRecordSet("totalspace") = round(objDisk.Size /1024/1024,2)
objRecordSet("freespace") = round(objDisk.FreeSpace /1024/1024,2)
objRecordSet("percentage") = (objDisk.Freespace /objDisk.Size)*100
objRecordSet("date") = strDate
objRecordSet("time") = strTime
objRecordSet.Update
Next
Next
' =============================================================
' Close DB connection
' =============================================================
objRecordSet.Close
objConnection.Close |
Hiermee kan je naar een access database door middel van een scheduled task de schijfruimte van je servers uitlezen, daar kan je weer andere queries per schijf op loslaten, grafiekjes genereren, wat je wilt.
Wil je de inhoud van je schijven nalopen kan je eventueel met
je output file kan je parsen met wat code en vervolgens daar ook weer een uitdraai van maken