[Catégorie modifiée VB6 --> VBS] Inventaire ComputerName & UserName vers Excel

Résolu
soulparty Messages postés 5 Date d'inscription lundi 31 octobre 2005 Statut Membre Dernière intervention 15 septembre 2010 - 14 sept. 2010 à 16:11
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 17 sept. 2010 à 23:56
Bonjour a tous ceux qui liront mon message,
voila, sur mon AD j'ai besoin de collecter les informations suivantes le "computername" et le "username" chose étant faite comme ceci: via une GPO machine, un batch lance le script vb (ci dessous) et enfin sort le resultat dans un fichier text . Compte tenu du nombre important de client. j'aimerais que les informations aille s'inscrire dans un fichier Excel ligne par ligne.
Merci de votre aide

Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
WScript.Echo "User Name = " & WshNetwork.UserName

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

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

For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
WScript.Echo "Adresse IP = " & IPConfig.IPAddress(i)
Next
End If
Next



soulparty

10 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
15 sept. 2010 à 17:42
bonjour

Un script qui ferait:

Se positionner sur le dossier qui réceptionne les
Faire une boucle sur tous les fichiers ayant un nom d'un certain format
récupérer l'information
Enregistrer l'information en fin d'un fcihier CSV qui sera ensuite lu directement par Excel
FIn de boucle

Confirme tu le type de script ci-dessus nécessaire qui me semble relativement simple


Attention, Je ne sais pas si je resterai connecté les prochains jours cause départ en congé et nombreux déplacements prévus .
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
15 sept. 2010 à 18:12
il manque avant ces lignes des déclarations
Il faut passer le dossier à la variable strFolder
Il faut ajouter en début l'initialiation de oFso

Set oFso = CreateObject("Scripting.FileSystemObject")
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
14 sept. 2010 à 17:05
bonjour
Autant remonter un fichier par poste et ensuite fusionner les résultats
0
soulparty Messages postés 5 Date d'inscription lundi 31 octobre 2005 Statut Membre Dernière intervention 15 septembre 2010
15 sept. 2010 à 17:25
c'est que je fais actuellement mais manuellement et ça me prends trop de temps (copie du contenu pour chaque fichier texte dans fichier excel). connaissez vous un script qui ferait ça automatiquement?

soulparty
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
soulparty Messages postés 5 Date d'inscription lundi 31 octobre 2005 Statut Membre Dernière intervention 15 septembre 2010
15 sept. 2010 à 17:46
Bonjour,

c'est exactement ça. un script de connexion en vb. qui collecte les informations suivantes: username, computername et @ip. Ensuite les informations vont s'ecrire dans un csv par exemple.

Merci de votre aide

soulparty
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
15 sept. 2010 à 18:07
Donc tu as pensé au transfert des fichiers sur un espace de stockage centralisé : ftp ou autre.

un script à adapter écrit à la volée mais pas testé
De la concaténation de fichier en script

set fw = oFso.OpenTextFile("Resultat", ForWriting, True)
Set oFolder= objFso.GetFolder(sFolder)
set colFiles= oFolder.Files
For Each oFile in colFiles
if oFile.Name like "*.*" Then
Set fr = oFso.OpenTextFile(oFile.Name, ForReading)
while Not fr.AtEndOfStream
call fw.WriteLine (fr.ReadLine)
Wend
fr.Close
End if
Next
fw.Close
end if
Next
0
soulparty Messages postés 5 Date d'inscription lundi 31 octobre 2005 Statut Membre Dernière intervention 15 septembre 2010
15 sept. 2010 à 18:19
je la colle ou la dernière ligne de code que tu a posté?
j'ai testé le 1er script (voir ci dessous) et il y a une erreur a la ligne 14. désolé mais je suis novice en dev.je creer le script dans le dossier courant (la ou sont mes fichiers textes). j'imagine que "resultat" est egale au nom de mes fichiers. puis je lance le script. c'est bien ça?

set fw = oFso.OpenTextFile("Resultat", ForWriting, True)
Set oFolder= objFso.GetFolder(sFolder)
set colFiles= oFolder.Files
For Each oFile in colFiles
if oFile.Name like "*.*" Then
Set fr = oFso.OpenTextFile(oFile.Name, ForReading)
while Not fr.AtEndOfStream
call fw.WriteLine (fr.ReadLine)
Wend
fr.Close
End if
Next
fw.Close
end if
Next


soulparty
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
15 sept. 2010 à 18:54
Merci d'avoir validé un script qui ne fonctionnait pas
Celui là je l'ai teste sous VBA d'Excel en mode pas à pas et le résultat est bon

Const ForReading = 2
Dim fw
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set fw = oFSO.CreateTextFile("c:\Resultat.csv", True)
Set oFolder = oFSO.GetFolder("C:\MonDossier")
'Set colFiles = oFolder.Files
For Each oFile In oFolder.Files
If oFile.Name Like "*.*" Then
'Set fr = oFso.OpenTextFile(oFolder.Path & "" & oFile.Name, ForReading)
Set fr = oFSO.GetFile(oFile.Path).OpenAsTextStream(1)
If fr.AtEndOfStream = False Then
Dim s As String
s = fr.ReadAll()
Call fw.WriteLine(s)
fr.Close
End If
End If
Next
fw.Close
0
soulparty Messages postés 5 Date d'inscription lundi 31 octobre 2005 Statut Membre Dernière intervention 15 septembre 2010
15 sept. 2010 à 20:53
Bonsoir,

j'ai testé le script il y a une erreur a la ligne 12 caractère 7.


soulparty
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
17 sept. 2010 à 23:56
 Bonsoir,

Dim s As String
Const ForReading 1, ForWriting 2, ForAppending = 8

Il n'y a pas de fonction Like en vbs,
la fonction Instr permet de rechercher une chaine de caractère.

exemple avec la méthode OpenTextFile

   
FnExcelImportTextFiles "C:\MonDossier", "*.*", "c:\Resultat.csv"

Sub ExcelImportTextFiles(ArgPath, ArgFile, ArgFileOutput)
   Const ForReading = 1 
   Dim oFso, oFolder, oFileExcel
   Set oFso = CreateObject("Scripting.FileSystemObject")
   
   On Error Resume Next 
   Set oFileExcel = oFso.CreateTextFile(ArgFileOutput, True)
   If Err.Number <> 0 Then 
      WScript.Echo "Fichier " & ArgFileOutput & " déjà ouvert" : Err.Clear
      Else
      Set oFolder = oFso.GetFolder(ArgPath)
      For Each oFile In oFolder.Files
          If InStr(1, oFile.Name, CStr(ArgFile)) And oFile.Size <> 0 Then
             Call oFileExcel.WriteLine(oFso.OpenTextFile(oFolder.Path & "" & oFile.Name, ForReading).ReadAll)
          End If
      Next
      oFileExcel.Close 
   End If

   Set oFolder = Nothing
   Set oFso = Nothing
   Set oFileExcel = Nothing     
End Sub

 





jean-marc
0
Rejoignez-nous