julow
Messages postés2198Date d'inscriptiondimanche 26 août 2007StatutMembreDernière intervention 7 juillet 2015
-
4 févr. 2009 à 09:56
xav3601
Messages postés3288Date d'inscriptionlundi 10 novembre 2008StatutMembreDerniè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")
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
'--------------------------------------------------------------------------------------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"
xav3601
Messages postés3288Date d'inscriptionlundi 10 novembre 2008StatutMembreDernière intervention 2 mars 2016311 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 :-)