Inventorier les fichiers NSF sur le disque et remonter la taille de chaque fichier

Le
Greg
Bonjour à tous,

Pour commencer, je tiens à dire que je suis un newbie en VBS. Je n'ai
pas vraiment l'esprit d'un développeur.

Pour un grand projet, je dois identifier les archives Lotus Notes
(NSF) sur mes postes de travail (près de 6000).
Pour cela, j'ai un script qui recherche les fichiers NSF et renvoi
dans un fichier txt. Il fonctionne.
Toutefois, je veux que le script me remonte la taille de chaque
fichier.
J'ai essayé avec des fonctions du type "objFile.FileSize" Que je
n'arrive pas à intégrer correctement.

Si vous avez une idée, voici mon script :

=
--
Option Explicit
Call ShowFilesLotus

Private Sub ShowFilesLotus()
Const HARD_DISK = 3
Dim objWMIService, colDisks, colFiles
Dim objDico, objTabExt, objDisk, objFile
Dim wshShell
Dim strComputer, i
Dim cles, strList
Dim ObjRapport, ObjFilerapport
Const ForWriting = 2, ForAppending = 8

strComputer = "."
objTabExt = "nsf"

Set wshShell = Wscript.CreateObject ("Wscript.Shell")

Set ObjRapport = CreateObject("Scripting.FileSystemObject" )
Set ObjFileRapport = ObjRapport.OpenTextFile("c:Lotus.txt",
ForAppending, True)

Set objDico = CreateObject("Scripting.Dictionary")
objDico.CompareMode = VBBinaryCompare

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" _
& strComputer & "ootcimv2")

Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK &
"")


For Each objDisk in colDisks
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where Drive = '" &_
objDisk.Name & "' And Extension = '" & objTabExt &"'")
For Each objFile in colFiles
'
'
If Mid(LCase(objFile.Path),2, 13) <> "program files" And _
Mid(LCase(objFile.Path),2, 7) <> "windows" Then
objDico.Add objFile.Name ,""
End if
Next
Next
Set colFiles = Nothing
Set colDisks = Nothing
Set objWMIService = Nothing

cles = objDico.Keys
For i = 0 To objDico.Count-1
ObjFileRapport.Writeline wshShell.ExpandEnvironmentStrings
("%COMPUTERNAME%") _
&vbTab& cles(i) &vbCr
Next
ObjFileRapport.WriteBlankLines(2)
ObjFileRapport.close
Set objDico = Nothing
Set wshShell = Nothing
End Sub
=
--

Merci !

Je précise que le script sera exécuté à distance à l'aide de
LANDesk

NB : En plus de la taille, j'aimerais rajouter le nom de la machine,
ainsi que le nom de l'utilisateur réel Lotus (j'ai un autre VBS pour
aller piocher dans le notes.ini. Avec un peu de chance j'arriverais à
imbriquer les deux !!)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Greg
Le #23438481
On 6 juin, 19:17, Greg
Bonjour à tous,

 Pour commencer, je tiens à dire que je suis un newbie en VBS. Je n'a i
pas vraiment l'esprit d'un développeur.

Pour un grand projet, je dois identifier les archives Lotus Notes
(NSF) sur mes postes de travail (près de 6000).
Pour cela, j'ai un script qui recherche les fichiers NSF et renvoi
dans un fichier txt. Il fonctionne.
Toutefois, je veux que le script me remonte la taille de chaque
fichier.
J'ai essayé avec des fonctions du type "objFile.FileSize" Que je
n'arrive pas à intégrer correctement.

Si vous avez une idée, voici mon script :

------------------------------------------------------------------------- -------------------------------------------------------------------
Option Explicit
Call ShowFilesLotus

Private Sub ShowFilesLotus()
Const HARD_DISK = 3
Dim objWMIService, colDisks, colFiles
Dim objDico, objTabExt, objDisk, objFile
Dim wshShell
Dim strComputer, i
Dim cles, strList
Dim ObjRapport, ObjFilerapport
Const ForWriting = 2, ForAppending = 8

strComputer = "."
objTabExt = "nsf"

Set wshShell = Wscript.CreateObject ("Wscript.Shell")

Set ObjRapport = CreateObject("Scripting.FileSystemObject" )
Set ObjFileRapport = ObjRapport.OpenTextFile("c:Lotus.txt",
ForAppending, True)

Set objDico = CreateObject("Scripting.Dictionary")
objDico.CompareMode = VBBinaryCompare

Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\" _
 & strComputer & "rootcimv2")

Set colDisks = objWMIService.ExecQuery _
 ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK &
"")

For Each objDisk in colDisks
 Set colFiles = objWMIService.ExecQuery _
 ("Select * from CIM_DataFile where Drive = '" &_
 objDisk.Name & "' And Extension = '" & objTabExt &"'")
 For Each objFile in colFiles
 '
 '
 If Mid(LCase(objFile.Path),2, 13) <> "program files" And _
 Mid(LCase(objFile.Path),2, 7) <> "windows" Then
 objDico.Add objFile.Name ,""
 End if
 Next
Next
Set colFiles =  Nothing
Set colDisks =  Nothing
Set objWMIService = Nothing

cles = objDico.Keys
For i = 0 To objDico.Count-1
 ObjFileRapport.Writeline wshShell.ExpandEnvironmentStrings
("%COMPUTERNAME%") _
 &vbTab& cles(i) &vbCr
Next
ObjFileRapport.WriteBlankLines(2)
ObjFileRapport.close
Set objDico = Nothing
Set wshShell = Nothing
End Sub
------------------------------------------------------------------------- -------------------------------------------------------------------

Merci !

Je précise que le script sera exécuté à distance à l'aide de
LANDesk...

NB : En plus de la taille, j'aimerais rajouter le nom de la machine,
ainsi que le nom de l'utilisateur réel Lotus (j'ai un autre VBS pour
aller piocher dans le notes.ini. Avec un peu de chance j'arriverais à
imbriquer les deux !!)



Personne n'a d'idée ?
Je suis vraiment perdu :/
Merci !!
Publicité
Poster une réponse
Anonyme