recuperation d'IP sur serveur distant, probleme de compteur - VB/VBA/VBS - Programmation
Marsh Posté le 31-03-2009 à 15:42:35
a quoi correspond "computer" ? une variable ?
si c'est le cas elle a pas l'air d'etre definie
Marsh Posté le 31-03-2009 à 15:52:38
c'est bien une variable definie au debut de mon script
voici le code complet pour avoir tout ;) :
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim objFSO,MyFile, f, ConfIP
Dim i
Set objFSO= CreateObject("Scripting.FileSystemObject" )
Set objFile = objFSO.OpenTextFile("liste_machines.txt" )
Set logobjFile = objFSO.CreateTextFile("rapport.txt",2)
Set Left_serv = objFSO.CreateTextFile("machines_non_connectées.txt",2)
Set WshNetwork = WScript.CreateObject("WScript.Network" )
Set WshShell = CreateObject("Wscript.Shell" )
logobjFile.Write "********** DEBUT DE TRAITEMENT ************"&vbCrLf&vbCrLf
msgbox "Le traitement va être lancé. Avant de cliquer sur OK assurez vous que vous n'avez pas de lecteur sous la lettre T (utilisée par le script)"&vbCrLf&vbCrLf&"Quand vous cliquerez OK le traitement démarrera. Il peut durer un certain temps (cela depend du fichier liste_machines)."&vbCrLf&"quand le traitement sera terminé, une boite de dialogue viendra vous avertir pour faire un bilan de l'action!"&vbCrLf&vbCrLf&"^_^",,"A vos marque, prêts..."
'debut du traitement
'Do While (objFile.Read(1)="\" )
while Not objFile.AtEndOfStream
Computer=objFile.ReadLine
On error resume next
'montage du lecteur reseau
WshNetwork.MapNetworkDrive "u:", "\\"&Computer&"\D$"
if (Err.Number)<>0 Then
'ecriture dans le fichier de log rapport.txt en cas d'impossibilité de connexion
logobjFile.Write Date&" - "&Time&" : "&"\"&Computer&" : erreur de connexion! fichier ajouté a la liste dans le fichier machines_non_connectes"&vbCrLf
Left_serv.Write "\"&Computer&vbCrLf
Err.Clear ' Efface l'erreur.
else
'check de l'existence du rep "sources"'
'copie des dossier de migrations'
If (objFSO.FolderExists("u:\sources" )) Then
objFSO.CopyFolder "\\uc227984\migration\MIGHDS","u:/sources/MIGHDS"
objFSO.CopyFolder "\\uc227984\migration\robocopy","u:/sources/robocopy"
objFSO.CopyFolder "\\uc227984\migration\confIP","u:/sources/confIP"
'ecriture dans le fichier log rapport.txt'
logobjFile.Write Date&" - "&Time&" : "&"\"&Computer&" : copie des folders"&vbCrLf
else
'creation du repertoire copie des dossiers'
objFSO.CreateFolder("u:\sources" )
objFSO.CopyFolder "\\uc227984\migration\MIGHDS","u:/sources/MIGHDS"
objFSO.CopyFolder "\\uc227984\migration\robocopy","u:/sources/robocopy"
objFSO.CopyFolder "\\uc227984\migration\confIP","u:/sources/confIP"
logobjFile.Write Date&" - "&Time&" : "&"\"&Computer&" : creation et copie des folders"&vbCrLf
End If
End if
'deconnexion du lecteur reseau
WshNetwork.RemoveNetworkDrive "u:"
'recuperation des configuration des serveur de la liste
'''''''''''''''''''''''
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2" )
Set IPConfigSet = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True" )
Set result = objFSO.CreateTextFile(Computer&".txt",8)
On error resume next
If Err.Number<>0 Then
result.write(" ---- non accessible ----" )
Else
i = 1
msgbox i
for each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) _
to UBound(IPConfig.IPAddress)
result.write " Configuration réseau de l'ordinateur " & ComputerName & vbcrlf & vbcrlf
result.write " Nom Machine " & vbtab & " : " & IPConfig.DNSHostName & vbcrlf & vbcrlf
result.write " Carte " & vbtab & " : " & IPConfig.Description(1) & vbcrlf
result.write " adresse MAC " & vbtab & " : " & IPConfig.MACAddress(1) & vbcrlf
result.write " adresse IP " & vbtab & " : " & IPConfig.IPAddress(1) & vbcrlf
result.write " Masque " & vbtab & " : " & IPConfig.IPSubnet(1) & vbcrlf
result.write " passerelle " & vbtab & " : " & IPConfig.DefaultIPGateway(1) & vbcrlf
'result.write " Serveur DHCP " & vbtab & " : " & IPConfig.DHCPServer & vbcrlf & vbcrlf
result.write " Serveur DNS " & vbtab & " : " & IPConfig.DNSServerSearchOrder(1) & vbcrlf
result.write " " & vbtab & vbtab & " : " & IPConfig.DNSServerSearchOrder(1) & vbcrlf
result.write " " & vbtab & vbtab & " : " & IPConfig.DNSServerSearchOrder(2) & vbcrlf
result.write " Suffixe DNS " & vbtab & vbtab & " : " & IPConfig.DNSDomainSuffixSearchOrder (1) & vbcrlf
result.write " " & vbtab & vbtab & " : " & IPConfig.DNSDomainSuffixSearchOrder (2) & vbcrlf
result.write " " & vbtab & vbtab & " : " & IPConfig.DNSDomainSuffixSearchOrder (3) & vbcrlf
result.write " Serveur WINS " & vbtab & " : " & IPConfig.WINSPrimaryServer(1) & vbcrlf
result.write " " & vbtab & " : " & IPConfig.WINSSecondaryServer(1) & vbcrlf & vbcrlf
result.write "Configuration "
i = i + 1
msgbox i
Next
end IF
next
End If
result.close
''''''''''''''''''''''''''
wend
logobjFile.close
objFile.close
Left_serv.close
Msgbox "Fini! deux fichiers ont été générés : rapport.txt et liste_machines_non_connectées.txt"
Marsh Posté le 31-03-2009 à 15:28:52
Bonjour a tous!!!!
Voila, j'ai un script qui me pose un peu de probleme:
tout d'abord je vais vous expliquer celui ci:
D'apres une liste de nom de machine (fichier txt) le script monte un lecteur reseau sur le serveur sous la lettre U.
une fois celuis ci monté je check si un répertoire "sources" existe
-s'il existe copie de fichier dedans
-si non creation du repertoire plus copie
une fois cette tache créée j'ai besoin de recuperer la configuration IP (type ipconfig/all) sur ma machine avec le nom de la machine en titre
jusqu'ici tout va bien....
Mais la j'ai un probleme les machines peuvent avoir X adresse IP, X adresse MAC, X suffixe DNS.....
voici mon code :
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2" )
Set IPConfigSet = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True" )
Set result = objFSO.CreateTextFile(Computer&".txt",8)
On error resume next
If Err.Number<>0 Then
result.write(" ---- non accessible ----" )
Else
i = 1
msgbox i
for each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) _
to UBound(IPConfig.IPAddress)
result.write " Configuration réseau de l'ordinateur " & ComputerName & vbcrlf & vbcrlf
result.write " Nom Machine " & vbtab & " : " & IPConfig.DNSHostName & vbcrlf & vbcrlf
result.write " Carte " & vbtab & " : " & IPConfig.Description(i) & vbcrlf
result.write " adresse MAC " & vbtab & " : " & IPConfig.MACAddress(i) & vbcrlf
result.write " adresse IP " & vbtab & " : " & IPConfig.IPAddress(i) & vbcrlf
result.write " Masque " & vbtab & " : " & IPConfig.IPSubnet(i) & vbcrlf
result.write " passerelle " & vbtab & " : " & IPConfig.DefaultIPGateway(i) & vbcrlf
result.write " Serveur DNS " & vbtab & " : " & IPConfig.DNSServerSearchOrder(i) & vbcrlf
result.write " " & vbtab & vbtab & " : " & IPConfig.DNSServerSearchOrder(i) & vbcrlf
result.write " " & vbtab & vbtab & " : " & IPConfig.DNSServerSearchOrder(i) & vbcrlf
result.write " Suffixe DNS " & vbtab & vbtab & " : " & IPConfig.DNSDomainSuffixSearchOrder (i) & vbcrlf
'result.write " " & vbtab & vbtab & " : " & IPConfig.DNSDomainSuffixSearchOrder (2) & vbcrlf
'result.write " " & vbtab & vbtab & " : " & IPConfig.DNSDomainSuffixSearchOrder (3) & vbcrlf
result.write " Serveur WINS " & vbtab & " : " & IPConfig.WINSPrimaryServer(1) & vbcrlf
result.write " " & vbtab & " : " & IPConfig.WINSSecondaryServer(1) & vbcrlf & vbcrlf
result.write "Configuration "
i = i + 1
msgbox i
Next
end IF
next
End If
result.close
''''''''''''''''''''''''''
wend
Et la 2erreurs:
1 mon script plante, il n'y a que jusqu'a l'adress mac dans mon fichier text
j'ai bien l'impression que ce n'est pas la bonne methode pour récupérer les infos IP(multiples)
Merci de votre aide!!!!!
Ps: je suis un VRAI debutant en scripting
Message édité par nautico le 01-04-2009 à 12:26:56