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

Signaler
Messages postés
5
Date d'inscription
lundi 31 octobre 2005
Statut
Membre
Dernière intervention
15 septembre 2010
-
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
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

Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
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 .
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
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")
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
bonjour
Autant remonter un fichier par poste et ensuite fusionner les résultats
Messages postés
5
Date d'inscription
lundi 31 octobre 2005
Statut
Membre
Dernière intervention
15 septembre 2010

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
Messages postés
5
Date d'inscription
lundi 31 octobre 2005
Statut
Membre
Dernière intervention
15 septembre 2010

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
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
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
Messages postés
5
Date d'inscription
lundi 31 octobre 2005
Statut
Membre
Dernière intervention
15 septembre 2010

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
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
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
Messages postés
5
Date d'inscription
lundi 31 octobre 2005
Statut
Membre
Dernière intervention
15 septembre 2010

Bonsoir,

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


soulparty
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 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