Script VBS

Fermé
julow Messages postés 2198 Date d'inscription dimanche 26 août 2007 Statut Membre Dernière intervention 7 juillet 2015 - 4 févr. 2009 à 09:56
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 - 4 févr. 2009 à 10:00
Salut ^^

J'ai ici un script qui me permet de récupérer les info des disques durs des postes d'une active directory... J'exécute donc ce script sur mon serveur de domaine afin de récupérer ces info dans un fichier excel.

Mais j'ai quelques problèmes!

Mon scripts ne gère pas du tout les postes avec plusieurs disques durs ou partitions... Je veux dire qu'il ne prend en compte qu'un seul disque dur! Problème ^^

Et lorsque l'un de mes PC de l'active directory est déconnecté mon script plante...

Voici mon script, si quelqu'un pouvait y jeter un ti coup de n'oeil ça serait super ^^

Merci!

'----------------------------------------------------------------------------------------connexion active directory
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCOmmand.ActiveConnection = objConnection
Set objRootDSE = GetObject("LDAP://rootDSE")
objCommand.CommandText = _
"Select Name from 'LDAP://" & objRootDSE.Get("defaultNamingContext") & "' " & "Where objectClass='computer'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

'---------------------------------------------------------------------------------------connexion au fichier excel
set oexapp = wscript.createobject("Excel.Application")
set owshshell = wscript.createobject("wscript.shell")
oexapp.visible = false
set oexwk = oexapp.workbooks.open("C:\infopc.xls")

'---------------------------------------------------------------------------------------effacement des données
oexapp.worksheets(1).cells(2,2).value = "NOM DU PC"
oexapp.worksheets(1).cells(2,2).Interior.ColorIndex = 27
oexapp.worksheets(1).cells(2,3).value = "ADRESSE IP"
oexapp.worksheets(1).cells(2,3).Interior.ColorIndex = 27
oexapp.worksheets(1).cells(2,4).value = "MAC"
oexapp.worksheets(1).cells(2,4).Interior.ColorIndex = 27
oexapp.worksheets(1).cells(2,5).value = "Lettre du Disque"
oexapp.worksheets(1).cells(2,5).Interior.ColorIndex = 27
oexapp.worksheets(1).cells(2,6).value = "Espace TOTAL"
oexapp.worksheets(1).cells(2,6).Interior.ColorIndex = 27
oexapp.worksheets(1).cells(2,7).value = "Espace Libre"
oexapp.worksheets(1).cells(2,7).Interior.ColorIndex = 27
oexapp.worksheets(1).cells(2,8).value = "Espace Libre %"
oexapp.worksheets(1).cells(2,8).Interior.ColorIndex = 27

x=3
nbligne=1
j=3
p=2

while oexapp.worksheets(1).cells(j,2).value <> ""
oexapp.worksheets(1).cells(j,2).Interior.ColorIndex = 2
for m=2 to 7
oexapp.worksheets(1).cells(j,m).value = ""
next
j=j+1
wend

while oexapp.worksheets(2).cells(p,1).value <> ""
for m=1 to 2
oexapp.worksheets(2).cells(p,m).value = ""
next
p=p+1
wend

'--------------------------------------------------------------------------------------- commencement de la boucle
Do Until objRecordSet.EOF
'---------------------------------------------------------------------------------------récupération du nom du pc
pcname = objRecordSet.Fields("Name").Value
oexapp.worksheets(1).cells(x,2).value = pcname

'---------------------------------------------------------------------------------------connexion au pc à distance

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & pcname & "\root\cimv2")

'---------------------------------------------------------------------------------------si connexion échoué
if err.number <> 0 then
oexapp.worksheets(1).cells(x,2).Interior.ColorIndex = 46
oexapp.worksheets(1).cells(x,3).value ="Impossible de joindre l hote"
oexapp.worksheets(1).cells(x,4).value ="Impossible de joindre l hote"
oexapp.worksheets(1).cells(x,5).value ="Impossible de joindre l hote"
oexapp.worksheets(1).cells(x,6).value ="Impossible de joindre l hote"
oexapp.worksheets(1).cells(x,7).value ="Impossible de joindre l hote"
x=x+1

'--------------------------------------------------------------------------------------si connexion réussi
else
oexapp.worksheets(1).cells(x,2).Interior.ColorIndex = 37





'--------------------------------------------------------------------------------------récupération de l'IP et du mac

Set IPConfigSet = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")

For Each IPConfig in IPConfigSet
oexapp.worksheets(1).cells(x,3).value =IPConfig.IPAddress
oexapp.worksheets(1).cells(x,4).value =IPConfig.MACAddress
Next

'--------------------------------------------------------------------------------------récupération des données système

Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")

For Each objOperatingSystem in colOperatingSystems

Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = 3")
For Each objDisk in colDisks
intFreeSpace = objDisk.FreeSpace/1024^3
intTotalSpace = objDisk.Size/1024^3
pctFreeSpace = intFreeSpace / intTotalSpace

oexapp.worksheets(1).cells(x,5).value =objDisk.DeviceID
oexapp.worksheets(1).cells(x,6).value =intTotalSpace
oexapp.worksheets(1).cells(x,7).value =intFreeSpace
oexapp.worksheets(1).cells(x,8).value =pctFreeSpace
Next

trouve=faux
k=1
while k<=nbligne and trouve=faux
if oexapp.worksheets(2).cells(k,1).value = objOperatingSystem.Caption then
oexapp.worksheets(2).cells(k,2).value = oexapp.worksheets(2).cells(k,2).value+1
trouve=vrai
end if
k=k+1
wend
if trouve = faux then
nbligne=nbligne+1
oexapp.worksheets(2).cells(nbligne,1).value = objOperatingSystem.Caption
oexapp.worksheets(2).cells(nbligne,2).value=1
end if
x=x+1
Next
end if

'--------------------------------------------------------------------------------------bouge au suivant

err.clear
objRecordSet.MoveNext
Loop

'--------------------------------------------------------------------------------------sauvegarde et fermeture du fichier

oexwk.save
oexwk.close
Wscript.Echo "FIN DU SCRIPT! Vos resultats ont ete place dans votre fichier Excel"
A voir également:

1 réponse

xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
4 févr. 2009 à 10:00
Salut,
En fait a propos des disque l'objet WMI les prends tous en compte, mais dans la meme variable...
Donc dans ton cas , je pense, qu'ill ne te renvoi que le dernier!
J'avais reussi il y'a quelque temps a recuperer tous les disques via des boulces, mais je ne me souviens plus de la structure... je vais essayer d'y reflechir quand meme :-)
0