IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[VBSCRIPT]Obtenir des info sur un PC distant


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut [VBSCRIPT]Obtenir des info sur un PC distant
    Ma question à une plage de réponse possible BIEN BIEN large, mais bon c'est pas grave je vais essayer de la réduire au maximum.
    Tout d'abord le script de base qui fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    option explicit
    dim fso, ipdebut, ipencours, ipfin, PING, PINGIT, MyFile
    dim ipd1 ,ipd2, ipd3 ,ipd4 , ipf1, ipf2, ipf3, ipf4
    dim WshShell
    const ForAppending = 8
    const FichierLOG= ""
    const NbTestPing = 4
    dim ipnumfin, ipnumencours
    
    
    ipd1=cbyte(inputbox("ipdebut octet1: "))
    ipd2=cbyte(inputbox("ipdebut octet2: "))
    ipd3=cbyte(inputbox("ipdebut octet3: "))
    ipd4=cbyte(inputbox("ipdebut octet4: "))
    
    
    if ipd4 > 254 OR ipd3 > 254 OR ipd4 = 0 OR ipd3 = 0 then
    	if ipd4 = 0 OR ipd3 = 0 then
    		wscript.echo " Un octet ne doit pas etre egale a 0 " & vbcrlf & _
    		" Le programme va quitter "
    		else
    		wscript.echo " Un octet ne doit pas depasser 254 " & vbcrlf & _
    		" Le programme va quitter "
    	end if
    	ipdebut=ipd1 & "." & ipd2 & "." & ipd3 & "." & ipd4
    	ipencours=ipdebut
    	Msgbox "IP NON VALIDE = " & ipencours 
    	WScript.Quit
    end if
    
    ipdebut=ipd1 & "." & ipd2 & "." & ipd3 & "." & ipd4
    Msgbox "Debut de la plage ip = " & ipdebut
    ipencours=ipdebut
    
    ipf1=cbyte(inputbox("ipfin octet1: "))
    ipf2=cbyte(inputbox("ipfin octet2: "))
    ipf3=cbyte(inputbox("ipfin octet3: "))
    ipf4=cbyte(inputbox("ipfin octet4: "))
    
    if ipf4 > 254 OR ipf3 > 254 OR ipf4 = 0 OR ipf3 = 0 then
    	if ipf4 = 0 OR ipf3 = 0 then
    		wscript.echo " Un octet ne doit pas etre egale a 0 " & vbcrlf & _
    		" Le programme va quitter "
    		else
    		wscript.echo " Un octet ne doit pas depasser 254 " & vbcrlf & _
    		" Le programme va quitter "
    	end if
    	ipfin = ipf1 & "." & ipf2 & "." & ipf3 & "." & ipf4
    	Msgbox "IP NON VALIDE = " & ipfin 
    	WScript.Quit
    end if
    
    ipfin = ipf1 & "." & ipf2 & "." & ipf3 & "." & ipf4
    Msgbox "Fin de la plage ip = " & ipfin
    ipnumfin=ipf1*16^6 + ipf2*16^4 + ipf3*16^2 + ipf4
    pinglogcreate()
    
    
    	do 
    
    		call pingexe
    
    			if PING = 0 then
    				pinglogwrite()
    			else
    				call pingexebis
    			end if
    		ipd4 = ipd4 + 1
    		ipencours=ipd1 & "." & ipd2 & "." & ipd3 & "." & ipd4
    		ipnumencours=ipd1*16^6 + ipd2*16^4 + ipd3*16^2 + ipd4
    
    			if ipd4 = 254 then
    			ipd3 = ipd3 + 1
    			ipd4 = 0 
    			end if
    	loop until ipnumencours > ipnumfin	'cStr(ipencours) > cStr(ipfin)
    	wscript.echo "c fini"
    	
    
    pinglogclose()
    
    
    '01 - creation de l'objet
    sub creer_objet_fso()
    	Set fso = CreateObject("Scripting.FileSystemObject")
    end sub
    
    
    '02 - procedure création du fichier log+ecriture de la plage
    sub pinglogcreate()
    	creer_objet_fso()
    	Set MyFile = fso.CreateTextFile("noterping.txt", ForAppending, True)
    '	MyFile.WriteLine()
    end Sub
    
    
    '03 - Fonction ping
    function pingexe
    	set WshShell = CreateObject ("Wscript.shell")
    	PINGIT="cmd /c ping " & ipencours & " -n " & NbTestPing
    	PING = WshShell.Run(PINGIT,1,TRUE)
    
    End Function
    
    
    '03bis - Fonction ping2
    function pingexebis
    	set WshShell = CreateObject ("Wscript.shell")
    	PINGIT="cmd /c ping " & ipencours & " -n 1"
    	PING = WshShell.Run(PINGIT,1,TRUE)
    End Function
    
    
    '04 - ECRIRE les ping qui ont rép positiv
    sub pinglogwrite()
    	MyFile.WriteLine(ipencours)	
    end sub
    
    
    '05 - FERMER le FICHIER LOG
    sub pinglogclose()
    	MyFile.Close
    end Sub
    La jusqu'à présent, l'utilisateur tape une tranche d'adresse IP, qui vont être pingées (ca se conjugue en francais? même âs sur que sa existe le verbe pinger ou pinguer !!), puis on écrit dans un fichier UNIQUEMENT les adresse qui réponde à la requête. Bon!!
    CA c'est fait!!!
    Mon problème, c'est que je n'arrive pas à savoir si l'adresse que je ping est DHCP ou non et pourtant j'ai zoné dans les tréfonds des basfonds de la MSDN de microsoft (qui est tres bien fourni c'est vrai) ou j'ai trouvé l'info suivante

    To obtain information for the operating system on a remote computer, use the NetWkstaGetInfo function, the Win32_OperatingSystem WMI class, or the OperatingSystem property of the IADsComputer interface.

    Et je dois aussi récupérer l'OS de la machine que je ping, récupérer l'OS d'un PC en local j'ai déjà fait, mais pour les PC distant la.. c'est une autre pair de manche!!

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    BONBONBON regardons caaaaa héhéhé
    C'est gentil d'avoir répondu aussi vite par contre, je m'attendais pas à une réponse avan ce soir ou 2m1 vraiment merci la!!

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Oui alors voila ce qui se passe, il est vrai que j'étais déjà au courant du fait que votre site est très bien fournit, j'avais déjà ton 1er lien dans mes favoris ou je me suis inspiré de ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Utilisation du namespace WMI dans lequel les opérations de gestion vont être effectuées.
    ManagementScope aManagementScope = new ManagementScope("\\\\IPOrdi\\root\\cimv2", ConnectionOptions);
    Puis avec ton 2ème lien, comment dire, haine et allégresse sont les 2 sentiments que j'ai ressenti!!
    Allégresse? (oui c'est trop, j'aurais juste du dire "jsui content!!") parce qu'il y a des liens fort intéressant et que c'est très complet (et que ca dépasse mais compétence mais c'est pas grave)
    Haine? parce que quand j'ai cliqué sur les liens j'ai remarqué que je tourné autour de ce que je cherchais sans l'atteindre et que cela peut être énervant de s'en rendre compte après 5 jours de suite de recherche chevronnée
    Bon je vais vous pondre le résultat final pour dans pas bien longtemps!!!
    Mais la j'ai déjà un autre bout de ce script (qui fonctionne) je vous le montre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    TONIP = "NomduPC" 'ou adresse IP xx.xx.xx.xx
    strComputer = TONIP
    
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    Set colItems = objWMIService.ExecQuery _
        ("Select * from Win32_NetworkAdapterConfiguration")
    
    For Each objItem in colItems
        Wscript.Echo "DHCP Enabled: " & objItem.DHCPEnabled
        Wscript.Echo "DHCP Lease Expires: " & objItem.DHCPLeaseExpires
        Wscript.Echo "DHCP Lease Obtained: " & objItem.DHCPLeaseObtained
        Wscript.Echo "DHCP Server: " & objItem.DHCPServer
        Wscript.Echo "MAC Address: " & objItem.MACAddress
    WScript.Quit
    Next
    SURTOUT ne pas oublier d'être en ADMIN et d'avoir les droits les plus élevés sinon sa marchera pas.
    Coment vais-je donc pouvoir faire tenir tout ca en un seul bloc (et encore c'est pas fini!!)

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    OH la fausse joie que j'au eu!!!
    voici donc la forme finale concernant ma partie DHCP + OS que je récupère du poste pingé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    TONIP = "xx.xx.xx.xx"
    strComputer = TONIP
    
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    Set colItems = objWMIService.ExecQuery _
        ("Select * from Win32_NetworkAdapterConfiguration")
    
    For Each objItem in colItems
        If i = 0 then
       Wscript.Echo "DHCP Enabled: " & objItem.DHCPEnabled
        Wscript.Echo "DHCP Server: " & objItem.DHCPServer
        Wscript.Echo "MAC Address: " & objItem.MACAddress
       i = i + 1
       End if
    Next
    
    Set objWMIService1 = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    
    Set colOperatingSystems = objWMIService1.ExecQuery ("Select * from Win32_OperatingSystem")
    
    For Each objOperatingSystem in colOperatingSystems
    Wscript.Echo objOperatingSystem.Caption & "       " & objOperatingSystem.Version
    Next
    L'effet est retombé laaaa
    Ca marche pas avec les P sous windows NT, c'est normal ca? (winmgmts nan?)(problème de compatibilité?)(WinNT c trop de vieu de toute facon?)

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    WMI n'est pas installé sous NT, il faut le faire.

  7. #7
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Points : 425
    Points
    425
    Par défaut
    Il faut utiliser wmicore.exe

    Non il est installé sous NT mais il faut faire une mise à jour notament des MOF.

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    euh
    wmicore, c'est-à-dire??

    Le lien à l'air mort, mais, j'espère que je ne dois pas installer l'exe dans TOUT(touT ou touS je c pu) les postes NT quand même(je sais plus combien il y a de poste à faire mais ... ouhlalaaaa)!!

    Je fais ce script pour automatiser cette tâche, l'utilisateur doit juste cliquer sur mon fichier .vbs, faudra déjà que je vous montre le script opérationnel du moment la attendez que je le retrouve

  9. #9
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2005
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 195
    Points : 425
    Points
    425
    Par défaut
    wmicore = ce qu'il faut installer pour mettre a jour WMI sur NT.. et si il faut le mettre sur TOUS les postes NT.

    Voila un autre lien

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    okay je vais voir ca!!!!

  11. #11
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    yep j'ai eu a peu prés le meme soucis en C++ expliqué ici : http://www.developpez.net/forums/vie...712727#2712727

    mon soucis c'est que j'ai toujours l'erreur 0x80041064 ( ==> acces denied)

    bref je cherche un compte utilisateur me permettant d'acceder au info via WMI ...

    suis aussi désespéré ... si quelqu'un povait m'eclairer ... merci !

  12. #12
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Merci d'éviter le multipost.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/12/2008, 14h54
  2. Recupérer des infos sur un serveur distant via oracle 10g
    Par TAMBOOH dans le forum Administration
    Réponses: 0
    Dernier message: 05/12/2008, 09h46
  3. Réponses: 2
    Dernier message: 15/07/2008, 14h43
  4. Réponses: 4
    Dernier message: 17/11/2006, 19h35
  5. Obtenir des infos sur une page web en ligne
    Par Logan_Cale dans le forum Web & réseau
    Réponses: 1
    Dernier message: 20/08/2005, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo