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

VBScript Discussion :

Affectation d'une adresse IP statique


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 38
    Par défaut Affectation d'une adresse IP statique
    Bonjour,

    Je souhaite automatiser la bascule entre DHCP et adresse IP statique pour une carte réseau bien pécise. À cette fin j'ai écrit le script suivant :

    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
    NICName = "Realtek PCIe GbE Family Controller" 
    ipaddr = Array("192.168.1.200") 
    subnet = Array("255.255.255.0")
     
    Set NICs = GetObject("winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
     
    For Each NIC in NICs
        If NIC.Description = NICName Then 
    		If NIC.DHCPEnabled Then
    			NIC.ReleaseDHCPLease()
    			on error resume next
    '			If NIC.IsWriteLocked Then
    '				NIC.ReleaseWriteLock
    '			End If
    			ret = NIC.EnableStatic(ipaddr, subnet)
    			msg = "code retour = " & ret & vbcrlf & "DHCP désactivé" & vbcrlf & "Adresse IP statique : " & NIC.IPAddress(0)
    		Else
    			ret = NIC.EnableDHCP
    			NIC.RenewDHCPLease()
    			msg = "code retour = " & ret & vbcrlf & "DHCP activé" & "Adresse IP dynamique : " & NIC.IPAddress(0)
    		End If
    		Exit For
       End If
    Next
    msgbox msg
    Le ReleaseDHCPLease fonctionne mais pas le EnableStatic. J'obtiens un code retour d'une valeur négative astronomique (-2147217405) mais rien ne bouge. En parcourant la toile j'ai lu qu'il fallait lever un éventuel vérou. Cela ne change rien d'où la mise en commentaire de ce bout de code.

    Je n'ai pas encore testé l'alternative, le passage en DHCP, car j'aimerais d'abord, si c'est possible, résoudre le problème du passage en adresse statique.

    Vos suggestions sont les bienvenues et je vous en remercie par avance.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    D'après ce que je lis, tu n'as pas forcément besoin de relâcher l'adresse IP acquise en DHCP, tu peux directement activer l'adressage statique.
    Donc si tu commentes le NIC.ReleaseDHCPLease(), que se passe-t-il?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 38
    Par défaut
    Bonjour umfred et merci de t'interesser à mon problème.

    que se passe-t-il
    Kif-kif. J'ai ajouté le release dans un 2e temps en passant que c'était peut-être nécessaire mais ça ne change rien. Si ce n'est qu'un ipconfig montre que le release fonctionne puisque l'adresse IP est devenue une adresse APIPA.
    Toutefois le message du script affiche toujours l'adresse IP de départ.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    J'avais un présentiment, qui est confirmé par la réponse de jurassic pork en 2011 https://www.developpez.net/forums/d1...c/#post6113490
    problème de droits, il faut lancer "en tant qu'administrateur"

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 38
    Par défaut
    Ceci m'avait affleuré l'esprit mais dans la mesure où le release passait je n'y croyais pas trop. Il n'est pas possible de lancer un script vbs en tant qu'administrateur par un simple clic. Il faut passer par la méthode du déclenchement à deux étages.

    Voici donc le script modifié :

    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
    ' Initialisation variables
    '-------------------------
    NICName = "Realtek PCIe GbE Family Controller" ' Remplacez par le nom de la carte réseau
    ipaddr = Array("192.168.1.200") 'Remplacer par l'adresse IP à affecter
    subnet = Array("255.255.255.0")
     
    'Le script se relance lui-même en mode administrateur
    '-----------------------------------------------------
    If WScript.Arguments.length = 0 Then
    	Set monShell = CreateObject("Shell.Application")
    	monShell.ShellExecute "wscript.exe", Chr(34)& WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
    Else 
     
    ' À la relance
    '-------------
    	Set NICs = GetObject("winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
    	For Each NIC in NICs
    		If NIC.Description = NICName Then 
    			If NIC.DHCPEnabled Then
    				NIC.ReleaseDHCPLease()
    				ret = NIC.EnableStatic(ipaddr, subnet)
    				msg = "code retour = " & ret & vbcrlf & "DHCP désactivé" & vbcrlf & "Adresse IP statique : " & NIC.IPAddress(0)
    			Else
    				ret = NIC.EnableDHCP
    				NIC.RenewDHCPLease()
    				msg = "code retour = " & ret & vbcrlf & "DHCP activé" & vbcrlf & "Adresse IP dynamique : " & NIC.IPAddress(0)
    			End If
    			Exit For
    		End If
    	Next
    	msgbox msg
    End If
    Tout semble maintenant fonctionner sauf l'affichage de l'adresse IP. Il y a systématiquement un coup de retard. C'est toujours l'ancienne que je récupère dans IPAddress au lieu de la nouvelle (après affectation ou après le renew).

    Ce n'est pas très génant en soi et il suffise que je ne l'affiche pas mais j'aimerais bien ne pas mourir idiot. Comment réactualiser cette valeur après modif ?

    En tout cas un grand merci pour m'avoir mis sur cette piste

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    regarde peut-être si il n'y aurait pas plusieurs adresses dans NIC.IPAddress, vu que c'est un tableau

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment avoir une adresse publique statique
    Par Mwekesha dans le forum Réseaux
    Réponses: 2
    Dernier message: 13/03/2024, 15h53
  2. [XL-2016] Affecter à une variable, l'adresse de la cellule trouvée via Find
    Par Laïnea dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2017, 18h50
  3. Affecter une adresse ip public a mon ordinateur
    Par hicdu06 dans le forum Hardware
    Réponses: 3
    Dernier message: 12/12/2014, 10h54
  4. affecter une adresse ip sur chaque port du switch
    Par blagapart dans le forum Développement
    Réponses: 1
    Dernier message: 08/08/2005, 18h42
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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