[VBS] nslookup via shell

nslookup via shell [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 13-01-2014 à 13:10:40    

Bonjour a tous :hello:
 
J'ai créé un script VBS qui ping des machines (PC, imprimantes,...etc) listées dans un fichier Excel.
 
Donc j'explique brièvement ce que j'ai fait jusqu'à présent :
 
Le script fait démarrer à la 2ème ligne du fichier excel (1ère ligne réservée à la mise en page), je fais appel a tout ce qui me faut pour la suite, ouverture du fichier Excel...etc
Ensuite je démarre une boucle qui prend en compte la 1ère colonne et qui à pour condition de s'arrêter lorsque la cellule renvoi la valeur "END".
je déclare mon ip qui se situe dans la cellule à la variable strComputer, j'applique la mise en page en 1ère ligne, je fais appel a Shell pour effectuer le ping et je créé un filtre pour éviter que le script ne cherche a faire un ping sur les cellules vides ou invalides.J'ai aussi créé un compteur pour savoir combien de fois la machine n'a pas répondu au ping (compteur réinitialisé si la machine répond). hop sa tourne en boucle ! Pour finir Excel se ferme et sauvegarde mon fichier.
 
Voilà le resultat :
http://image.noelshack.com/minis/2014/03/1389612628-sans-titre.png
 
Maintenant je souhaite affichier le nom de la machine via nslookup mais je n'y arrive franchement pas. J'ai testé le WMI mais il s'est avéré que le ping via WMI ne passe pas bien sur tout les PC et les imprimantes, donc j'ai peur que passer par WMI pose des problèmes.
 
Voici le code :

Code :
  1. Set objExcel = CreateObject("Excel.Application" )
  2. objExcel.Visible = True
  3. intRow = 2
  4. Set Fso = CreateObject("Scripting.FileSystemObject" )
  5. Set objWorkbook = objExcel.Workbooks.Open("C:\File_Name.xlsx" )
  6. Set InputFile = objWorkbook
  7. '# Debut Boucle
  8. Do Until objExcel.Cells(intRow,1).Value = "END"
  9. strComputer = objExcel.Cells(intRow, 1).Value
  10. objExcel.Cells(1, 1).Value = "Machine Name"
  11. objExcel.Cells(1, 2).Value = "Status"
  12. objExcel.Cells(1, 3).Value = "Down Count"
  13. objExcel.Cells(1, 4).Value = "Name"
  14. On Error Resume Next
  15. '# Declaration Variables
  16. Set WshShell = WScript.CreateObject("WScript.Shell" )
  17. Ping = WshShell.Run("ping -n 1 " & strComputer, 0, True)
  18. ip172=InStr(1,strComputer,"172" )
  19. ip193=InStr(1,strComputer,"193" )
  20. If ip172 > 0 Then
  21.  For Each objItem in Ping
  22.  Select Case Ping
  23.  Case 0 objExcel.Cells(intRow, 2).Value = "Up"
  24.  objExcel.Cells(intRow, 3).Value = ""
  25.  Case 1 objExcel.Cells(intRow, 2).Value = "Down"
  26.  objExcel.Cells(intRow, 3).Value = objExcel.Cells(intRow, 3).Value + 1
  27.  End Select
  28.  intRow = intRow + 1
  29. Next
  30. Elseif ip193 > 0 Then
  31.  For Each objItem in Ping
  32.  Select Case Ping
  33.  Case 0 objExcel.Cells(intRow, 2).Value = "Up"
  34.  objExcel.Cells(intRow, 3).Value = ""
  35.  Case 1 objExcel.Cells(intRow, 2).Value = "Down"
  36.  objExcel.Cells(intRow, 3).Value = objExcel.Cells(intRow, 3).Value + 1
  37.  End Select
  38.  intRow = intRow + 1
  39. Next
  40. Else intRow = intRow + 1
  41. End if
  42. Loop
  43. '# Fin Boucle
  44. '# Mise en page du fichier EXCEL
  45. objExcel.Range("A1:D1" ).Select
  46. objExcel.Selection.Interior.ColorIndex = 19
  47. objExcel.Selection.Font.ColorIndex = 11
  48. objExcel.Selection.Font.Bold = True
  49. objExcel.Cells.EntireColumn.AutoFit
  50. Set objWorkbook = Nothing
  51. '# Fermeture et sauvegarde du fichier
  52. objExcel.ActiveWorkbook.Close true
  53. objExcel.Quit
  54. Set wsExcel = Nothing
  55. Set wbExcel = Nothing
  56. Set appExcel = Nothing


 
Donc si quelqu'un de généreux peut m'aider je suis preneur :)


Message édité par Dan__124 le 13-01-2014 à 13:19:20
Reply

Marsh Posté le 13-01-2014 à 13:10:40   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed