Salut Mister lameche,
je n'ai pas autant de temps que toi pour coder à ce que je vois,
toutefois, j'ai moi aussi rafiné le code ...
je vais regarder le tien mais en attendant, tu peux regarder
celui-ci, chez moi il vire impect :-)
et oui, effectivement tu verras que j'ai corrigé beaucoup de choses.
serait-ce "shumarrer" ?
'-------------------------------------------------------------------------
' Script de description des Hdd dans une page web et/ou une base Access
' ------------------------------------------------------------------------
'
'*************************************************************************
'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, objConnection, objRecordset
'*************************************************************************
'
Dim objWMIService, colItems, DestHtml
'Créer un objet fichier
Set oFS = WScript.CreateObject("Scripting.FileSystemObject")
'********-----------------------------------------------------************
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)
DestHtml = "hd.html"
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()
Set objWMIService = Nothing
Set colItems = Nothing
'
'**** Fin du script
WScript.Quit
Function Display( strComputer )
Dim objWMIServ, colonnesItem
On Error Resume Next
Set objWMIServ = 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 colonnesItem = objWMIServ.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)
For Each objItem in colonnesItem
Aff(cnt) = strComputer
Aff0(cnt) = Mid(objItem.Name,1,1)
If ( objItem.Size > 0 ) Then
Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) )
End If
If (objItem.FreeSpace > 0) Then
Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) )
End If
If ( (objItem.Size > 0) And (objItem.FreeSpace > 0) ) Then
Aff3(cnt) = ( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & vbCrLf
End If
cnt = cnt + 1
Redim Preserve Aff(cnt)
ReDim Preserve Aff0(cnt)
Redim Preserve Aff1(cnt)
Redim Preserve Aff2(cnt)
Redim Preserve Aff3(cnt)
Next
Set objWMIServ = Nothing
Set colonnesItem = Nothing
End Function
' ----------------------------------------------------------
Function CreateHTML(filename)
Dim ts
Set ts = oFS.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>Remanier le 21 juin 2005 lol</font></b>"
ts.WriteLine "</CENTER></BODY>"
ts.WriteLine "</HTML>"
ts.close
Set ts = Nothing
End Function
' ----------------------------------------------------------
Function CreateBDAccess()
Dim Fichier, Disque, AccessFichier
'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")
'Lecteur courant ?
Disque = Mid(Fichier, 1, 2)
'Capture du lecteur
Set oLecteur = oFS.GetDrive(Disque)
'Si lecteur prêt ?
If (oLecteur.IsReady) Then
'Si le fichier existe ?
If (oFS.FileExists(Fichier)) 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 toutes les données souhaitées
objRecordset.Open "SELECT * FROM EspaceDisk" , objConnection, adOpenStatic, adLockOptimistic
End If
End If
For i = 0 To (cnt -1)
objRecordset.AddNew
objRecordset("Ordinateur") = Aff(i)
objRecordset("Lecteur") = Aff0(i)
objRecordset("Grandeur") = Aff1(i)
objRecordset("Disponible") = Aff2(i)
objRecordset("Ratio") = Aff3(i)
objRecordset.Update
Next
objConnection.Close
Set objConnection = Nothing
Set objRecordset = Nothing
Set oFS = Nothing
Set oLecteur = Nothing
End Function
Je crois qu'il n'y as pas de mauvaise manière, il suffit d'obtenir
le bon résultat, l'erreur que j'avais occure lorsque l'une des partitions d'un disque quelconque n'est pas formatté. Or c'est
pour cela que j'ai rajouté un contrôle sur la lecture.
Il y a encore du travail, mais ça tient la route :-)
Lupin
~L'essentiel est invisible pour les yeux~
~On ne voit bien qu'avec le coeur~