surveillance des disque en Vbscript et Wmi "Urgent" - VB/VBA/VBS - Programmation
Marsh Posté le 18-06-2005 à 18:49:35
le premier paragraphe : a compris.
le second paragraphe : a pas compris.
Tu peux détailler stp ?
Marsh Posté le 19-06-2005 à 12:05:15
Salut Merci de t etre penché sur le sujet donc le second paragraphe permet dafficher le resultat sur une page Web. plutot que davoir ca sur Une MsgBox!! As tu compris ???
Marsh Posté le 19-06-2005 à 17:38:49
Bon je reprend tes deux sujets en un.
si tu veux éxécuter ton script toutes les 8h, utilise plutot le VBA contenu dans Acces (si tu as).
C'est quasiment la même programmation. Après, avec un sacré timer, tu peux faire ta remontée d'infos pépère.
Moi je vois le truc sous cette forme
timer écoulé
récupérer tout l'espace disque
insérer l'espace disque dans la table
si espace disque faible -> message
re timer
Marsh Posté le 20-06-2005 à 09:32:24
salut knakes en ce qui concerne la lancement de mon script a des moment precis il n y aura pas de probleme dans la mesure ou je configurerai dans mes taches planifié.Mon probleme reside dans le faite que je doit envoyer les données que recupere mon script a savoir l espace dique restant dans une base de données type ACESS POUR ENSUITE pouvoir effectué des statistique et des graphes de l evolution de mon espace disque!! tu comprends..???? et c est sur ca dont j ai besoin d aide merci d avance !!!
Marsh Posté le 20-06-2005 à 12:35:50
pour envoyer dans une bdn type acces, le mieux c'est de faire une macro pour un fichier et lancer ce ficher toutes les 5 minutes
toutes tes valeurs -> dansla base et après tu peux te permettre un traitement automatisé.
Marsh Posté le 21-06-2005 à 15:50:49
salut knakes moi je doit faire Que du Vbscript
en faite le premier script que j ai poster juste au dessus fonctionne c est a dire qu il me recupere bien les information concernant les disques:
Voici le script avec les modification pour qu il envoi les données vers une base access mais il ne fonctionne pas. il ya un problem et je n arrive pas a le corriger alors si kelkun pour pouvais me donner un coup de main se serai cool!!
voici les données concernant ma base de données pe etre qu elle peuvent vous etre utiles :
En faite Moi j ai crée une base de donnée Appelée BdDisque.mdb et dans cette base de donnée j ai crée une table que j ai nomé EspaceDisque et qui contient les champs suivants: Nom
Drive
Size
Free
Pourcentage
Date
Comme vous pouvez l apercevoir cela correspond en faite aux données recuperées par mon script !! Ma base de Donnée se trouve dans mon disque F:\
Alors dites moi si ce que j ai fais est correcte deja dans un premier temps pour que je ne continu pas dans la n importe quoi lol
'----------------------------------------------------------
' Script de description des Hdd dans une page web
' ----------------------------------------------------------
'
'*************************************************************************
'Constante d'accèss au fichier *.mdb
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Const MoteurDeRecherche = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" '
' Déclaration des variables de la base de données ACCESS
'
Dim oFS, Disque, Fichier, AccesFichier
Dim objConnection
Dim objRecordset
Dim AccesFichier
'*************************************************************************
'********-----------------------------------------------------************
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject" )
DestHtml = "hd.html" '********-----------------------------------------------------************
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)
CreateHTML (DestHTML )
CreateBDAccess()
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
' ----------------------------------------------------------
Function 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 Function
Function CreateBDAccess()
'Nom du fichier MSAccess
Fichier = InputBox(msgTexte, "Saisie du fichier à créer", "C:\MaBase.MDB" )
'Établie un objet ADO pour déplacement dans objet
Set objConnection = CreateObject("ADODB.Connection" )
Set objRecordset = CreateObject("ADODB.Recordset" )
'Créer un objet fichier pour atteindre le fichier mdb
Set oFS = CreateObject("Scripting.FileSystemObject" )
'Lecteur courant ?
Disque = Mid(Fichier, 1, 2)
'Capture du lecteur
Set oLecteur = oFS.GetDrive(Disque)
'Lecteur prêt ?
If (oLecteur.IsReady) Then
'Accroche le fichier sur le moteur de recherche
AccesFichier = MoteurDeRecherche & Fichier
'Ouverture du fichier access
objConnection.Open AccesFichier
'Création d'un ensemble "recordset" sur les données souhaité
objRecordset.Open "SELECT * FROM MaTable" , objConnection, adOpenStatic, adLockOptimistic
End If
For i = 0 to cnt
objRecordset.AddNew
objRecordset("Champs1" ) = Aff(i)
objRecordset("Champs2" ) = Aff0(i)
objRecordset("Champs3" ) = Aff1(i)
objRecordset("Champs4" ) = Aff2(i)
objRecordset("Champs5" ) = Aff3(i)
objRecordset.Update
Next
End Function
Marsh Posté le 22-06-2005 à 09:21:16
En faite avec le code ci dessus ca creer Une nouvelle Base de donnée si j ai bien compris biensur desolé je debute lool
En faite MOi ma base est deja creé sous Access elle est Nommé "BdDisque" avec une Table Applée "EspaceDisque" ET qui contient les champs suivants:
"Nom"
"Drive"
"Size"
"Free"
"Pourcentage"
"Date "
Moi je souhaite UNIQUEMENT ENVOYER LES DONNEES RENVOYe PAR MON SCRIPT dans ma base de données que j ai deja creé sur Access . Il faut que a chaque lancement du script les données soit memorise dans cette base voila
ALors si Lupin ou quelqu un pouvait m aider se serais sympa merci
voici mon script qui fonctionne deja pour la recuperation des données:
'----------------------------------------------------------
' 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
Marsh Posté le 16-06-2005 à 12:27:54
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