Lister les lecteurs réseaux

cs_4nthony Messages postés 2 Date d'inscription lundi 2 avril 2012 Statut Membre Dernière intervention 25 juillet 2012 - 25 juil. 2012 à 17:04
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 25 juil. 2012 à 19:01
Bonjour à tous,
Je suis étudiant et je bloque sur mon vbs... j'ai essayé de chercher et tester mais en vain !
Voici mon code (en entier) ça peut toujours en aider plus d'un !

Je fais quelques tests avant de lancer les commandes suivantes :

For Each objStatus_2 in oo
If objStatus_2.Statuscode = 0 Then
For i = 0 to colDrives.Count-1 Step 2
'Boucle permettant de faire n+1 les lecteurs réseaux (+hdd locaux demande de NB à faire)
objTextFile_ipOK.Write(colDrives.Item(i) & ";" & colDrives.Item (i + 1) & ";")
next

Le problème étant que je dois le faire depuis le serveur de domaine en question (bien sur en administrateur)
Mais en fichier réponse, je n'ai pas les requêtes des lecteurs réseaux ni des sessions ouverte de l'utilisateur x et y...
En fichier de sortie j'ai cela :

IP ORDINATEUR;PING OK ?;NSLOOKUP;NOM ORDINATEUR;NOM UTILISATEUR;LETTRE;CHEMIN RSX;a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
10.20.8.2;Ping OK;TOTO;Administrateur;Nslookup OK;
10.20.8.3;Ping OK;TOTO;Administrateur;Nslookup OK;
10.20.8.4;Ping OK;TOTO;Administrateur;Nslookup OK;

Que faire ?
Avez vous déjà eu ce type de problème ?
Pourriez vous m'aider ?
Y a t'il un moyen plus simple pour avoir une remontée d'information, de quoi faire un CSV et le traiter par la suite par excel ?

Merci beaucoup ! :)

2 réponses

cs_4nthony Messages postés 2 Date d'inscription lundi 2 avril 2012 Statut Membre Dernière intervention 25 juillet 2012
25 juil. 2012 à 17:05
VOICI MON SCRIPT EN ENTIER :

'****************************************************************
'* * * ANTHONY B. - SCRIPT RECUP LECTEURS RESEAUX * * *
'* 25-07-2013
'****************************************************************
'---Erreurs en mode "manuel"
On Error Resume Next
' **************************************
' DECLARATIONS
Dim oct1
dim oct2
dim oct3
dim oct4
dim adresseIP
Dim ping
dim nsl00kup
dim strComputer
dim strName
Dim alphabet
' **************************************

' **************************************
'Document sortie de texte
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile_ipNok = objFSO.CreateTextFile("0-NOparc_rsx_wmi.txt")
Set objTextFile_ipOK = objFSO.CreateTextFile("1-ONparc_rsx_wmi.txt")
' Set objLogFile = objFSO.CreateTextFile("nothing.csv", ForWriting, True)

'Objets
Set objNetwork = WScript.CreateObject("WScript.Network")
Set colDrives = objNetwork.EnumNetworkDrives
Set Hdd_computer = objFSO.Drives
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & concaIP & "\root\cimv2")
Set colCompSystems = objWMIService.ExecQuery("SELECT * FROM " & "Win32_ComputerSystem")

' Pour voir les disques internes
Set nsloo = objShell.Exec( "nslookup " & concaIP)
Set wshShell = WScript.CreateObject( "WScript.Shell" ) 'fonctionne pour "nom_pc"

' Pour les Tests Ping & Nslookup
Set objShell = CreateObject("WScript.Shell")
Set test_1 = GetObject("winmgmts:{impersonationLevel=impersonate}!\").ExecQuery("select * from Win32_PingStatus where address = '" & concaIP & "'") 'test ping 1
Set test_2 = objShell.Exec("ping -n 2 -w 1000 " & concaIP) 'test ping 2 (win2000)
Set test_3 = objShell.Exec("nslookup " & concaIP) 'test nslookup
' **************************************

'Set locale "set en CMD"
nom_pc = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
nom_user = wshShell.ExpandEnvironmentStrings( "%USERNAME%" )
nom_cls = wshShell.ExpandEnvironmentStrings( "cls" )
' **************************************
' Valeur des variables (défaut à 0) :
oct1 = 0
oct2 = 0
oct3 = 0
oct4 = 0
'concaIP = oct1 & "." & oct2 & "." & oct3 & "." & oct4
' **************************************

' **************************************
'alphabet as string
alphabet = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
pingo "perdus 0"
' **************************************

test_ping2 = booleen

' **************************************
' Lexique :
' concaIP : Concaténation IP
' oct[x] : octet de chaque tronceau d'IP
'
'Aide : for est équivalent à {
'Aide : next est équivalent à }
' vbCrLf = Permet de faire un retour à la ligne
' xxxxx.Write (pour écrire sur une ligne)
' xxxxx.WriteLine (pour sauter une ligne à chaque instruction)
' **************************************

' Déclaration des lignes (tableau excel)
' Ping OK
objTextFile_ipOK.Write("IP ORDINATEUR" & ";" & "PING OK ?" & ";" & "NSLOOKUP" & ";" &"NOM ORDINATEUR" & ";" & "NOM UTILISATEUR" & ";" & "LETTRE" & ";" & "CHEMIN RSX" & ";" & alphabet & vbCrLf)
' Ping NOK (garder un historique)
objTextFile_ipNok.Write("IP ORDINATEUR" &";" & "PING NOK ?" & ";" & "NSLOOKUP" & vbCrLf)
'msgbox (alphabet)

'Début des boucles pour les octets 1 à 4

' ************************************** DEBUT DU SCRIPT
' Mise en place des octets

For oct1 = 192 To 192
For oct2 = 168 To 168
For oct3 = 42 To 42
For oct4 = 22 To 24

concaIP = oct1 & "." & oct2 & "." & oct3 & "." & oct4

'*************************************** Test Ping 1
' VALIDE PHASE 1
'MsgBox "Ping n°1 : " & concaIP
For Each objStatus in test_1
'Obligation de laisser les définition "set" pour réinitialiser les ping
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ping -n 4 -w 1000 " & concaIP)
strPingResults = LCase(objExec.StdOut.ReadAll)
If InStr(strPingResults, "perte 0%") Then
'MsgBox concaIP & " responded to ping."
For Each objCompSystem In colCompSystems
'MsgBox "Host Name: " & LCase(objCompSystem.Name)
objTextFile_ipOK.Write (concaIP & ";" & "Ping OK" & ";" & nom_pc & ";" & nom_user & ";")
Next
Else
'MsgBox concaIP & " did not respond to ping."
objTextFile_ipNok.Write (concaIP & ";" & "PING NOK" & ";")

End If

'*************************************** Test Ping 2
' VALIDE PHASE 2
'MsgBox "Ping n°2 : " & concaIP
Set oo = GetObject("winmgmts:{impersonationLevel=impersonate}!\").ExecQuery("select * from Win32_PingStatus where address = '" & concaIP & "'")
For Each objStatus_2 in oo
If objStatus_2.Statuscode = 0 Then
For i = 0 to colDrives.Count-1 Step 2
'Boucle permettant de faire n+1 les lecteurs réseaux (+hdd locaux demande de NB à faire)
objTextFile_ipOK.Write(colDrives.Item(i) & ";" & colDrives.Item (i + 1) & ";")

next
'msgbox (objStatus_2.Statuscode)
'msgbox ("TEST OK ^^")
Else
'msgbox (objStatus_2.StatusCode) 'pour une ip qui ne ping pas au début (1) il me dit statucode = 0 donc c'est pas bon
'msgbox ("TEST NOK --")
End If

'*************************************** Test Nslookup
'msbox ("Nslookup : " & concaIP)
Set nsl = CreateObject("WScript.Shell")
Set objScript_nsl = objShell.Exec("nslookup " & concaIP)
resultat_nsl = LCase(objScript_nsl.StdOut.ReadAll)
If InStr(resultat_nsl, "nom :") Then
'msgbox (strComputer & "2> Nslookup OK !")
objTextFile_ipOK.Write ("Nslookup OK" & ";")

Else
'msgbox (strComputer & "2> Nslookup NOK !")
objTextFile_ipNok.Write (concaIP & ";" & "Nslookup NOK" & ";")
End If

objTextFile_ipNok.Write (vbCrLf)

Next 'For each (L119)
Next 'For each (L99)



Next
objTextFile_ipOK.Write (vbCrLf)
Next
Next
Next

WScript.Quit
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
25 juil. 2012 à 19:01
Bonjour,

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Rejoignez-nous