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