Surveillance des disque en Vbscript et Wmi

Résolu/Fermé
lameche007
Messages postés
20
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
12 août 2005
- 16 juin 2005 à 10:34
 nou - 21 déc. 2016 à 15:34
bonjour a tous je debute en vbScript et donc comme tout debutant j ai un probleme que vois ci :
Je doit faire un script pemettant la surveillance d espace disque sur des seveurs j ai donc fai un script qui permet de recuperer l espace disque total ainsi que l espace libre sur celui ci en pour centage !!

Maintenant je souhaiterais pouvoir spécifier une liste de serveurs avec un seuil en % pour chacun des volumes de chaque serveur puis stocker ces informations horodatées dans une base de type Access et finalement pouvoir faire des remonter d'alerte via Lotus si un volume est en dessous du seuil pré-défini

voila alors est ce que quelqu ' un peu m orienter ou bien me donner des lien traitant d un sujet similaire parceque j ai beau chercher et je ne trouve rien merci d avance a tous

voila mon debut de script qui je pense peut vous aider a comprendre un pue mieux ce que je veux faire :

'----------------------------------------------------------
' Script de description des Hdd dans une page web
' ----------------------------------------------------------
Dim cnt
dim Aff()
dim Aff0()
dim Aff1()
dim Aff2()
dim Aff3()

cnt = 0
Redim Aff(cnt)
Redim Aff0(cnt)
Redim Aff1(cnt)
Redim Aff2(cnt)
Redim Aff3(cnt)

Select Case WScript.Arguments.Count
Case 0
' Default if none specified is local computer (".")
Set objWMIService = GetObject( "winmgmts://./root/cimv2" )
Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
For Each objItem in colItems
strComputer = objItem.Name
Next
Case 1
' Command line parameter can either be a computer name
' or "/?" to request online help
strComputer = Wscript.Arguments(0)
if InStr( strComputer, "?" ) > 0 Then Syntax
Case Else
' Maximum is 1 command line parameter
Syntax
End Select

Display( strComputer )

Function Display( strComputer )
On Error Resume Next
Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
If Err.Number Then
WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _
" " & Err.Description
Err.Clear
Syntax
End If
On Error GoTo 0
' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48)
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)
For Each objItem in colItems
Aff(cnt) = strComputer
Aff0(cnt) = objItem.Name & vbTab
Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) )
Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) )
Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _
vbCrLf
cnt = cnt + 1
Redim Preserve Aff(cnt)
Redim Preserve Aff0(cnt)
Redim Preserve Aff1(cnt)
Redim Preserve Aff2(cnt)
Redim Preserve Aff3(cnt)
Next
End Function

' ----------------------------------------------------------
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
DestHtml = "hd.html"
CreateHTML DestHTML

Sub CreateHTML(filename)
dim ts
set ts=fso.CreateTextFile(filename,true)
ts.writeline "<HTML>"
ts.WriteLine "<BODY>"
ts.WriteLine "<b><CENTER><H3>Affiche les informations des HDD</H3></b>"
ts.writeline "<table border=1 cellspacing=1 width=100%>"
ts.writeline "<tr>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Name</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Drive</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Size</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>Free</b></td>"
ts.writeline "<td width=20%>"
ts.writeline "<p align=center><b>% Free</b></td>"
ts.writeline "</tr>"
ts.writeline "<tr>"
for i = 0 to cnt
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff0(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff1(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff2(i) & "</font></b></td>"
ts.writeline "<td width=20%><p align=center><b><font color=#FF0000>" & Aff3(i) & "</font></b></td>"
ts.writeline "</tr>"
next

ts.writeline "</table>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<p> </p>"
ts.writeline "<b><font size=2>Fait le 14 juin 2005 par Mohax qui pète un plomb lol</font></b>"
ts.WriteLine "</CENTER></BODY>"
ts.WriteLine "</HTML>"
ts.close
End Sub

2 réponses

lameche007
Messages postés
20
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
12 août 2005
6
4 juil. 2005 à 09:37
mon problem est reglé
2
getmoa
Messages postés
2
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
23 mars 2007

4 août 2006 à 15:06
bonjour,
Pourrais-tu donner la reponse stp ? j'ai le même pb, ou plutôt le même besoin. merci
0
j'aime bien avoir la rép! merci
0
Bonjour,

Tout d'abord,Tres bon travail pour un debutant!!!

J'ai recemment eu le meme besoin et j'ai modifié un petit peu le code pour permettre l'affichage a partir d'une liste de nom d'ordi.

le fichier contenant les ordi doit s'appeler ordi.txt, doit se trouver dans le meme repertoire que le script et doit contenir un nom d'ordi par ligne

exempl:

Ordi1
Ordi2
Ordi3


le main du programme est le suivant il faut bien evidemment recuperer le code des fonction Display et CreateHTML:

'**************************************************
Dim cnt
dim Aff()
dim Aff0()
dim Aff1()
dim Aff2()
dim Aff3()

cnt = 0
Redim Aff(cnt)
Redim Aff0(cnt)
Redim Aff1(cnt)
Redim Aff2(cnt)
Redim Aff3(cnt)


Const ForReading = 1
Dim oFso, f

dim rep,fic
rep = WScript.ScriptFullName
fic = WScript.ScriptName

rep = left(rep,len(rep)-len(fic))


Set oFso = CreateObject("Scripting.FileSystemObject")
Set f = oFso.OpenTextFile(rep &"ordi.txt", ForReading)
while Not f.AtEndOfStream
'wscript.echo f.ReadLine
strComputer = f.ReadLine
Display( strComputer )

Wend
f.Close

Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
DestHtml = "hdd.html"
CreateHTML DestHTML

'petit plus on ouvre directement le fichier dans IE
Dim IE
Set IE = Wscript.CreateObject("InternetExplorer.Application")
IE.Visible = 1
IE.navigate rep & "hdd.html"

'*************************************************


Je n'ai pas gerer les erreurs au cas ou les ordi n'existent pas donc attention a l'orthographe!!!

++
2
Bonjour,
Ce script m'interresse,
Je suis nul en prog.
Est il possible de me compiler les deux scripts afin d'avoir un script qui marche ?
Merci a vous...
0
ce script ne fait que afficher les noms cites dans le fichiers ordi.txt
0