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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    août 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 26
    Points : 13
    Points
    13

    Par défaut WINS - définir ou changer à l'aide du VBS

    Bonsoir,

    Je souhaite définir ou changer le wins primaire et/ou secondaire à l'aide d'un script.

    Mon script fonctionne quand il s'agit de rajouter un wins secondaire quand il y a déjà un wins primaire.
    Mais il ne fonctionne pas quand il n'y a pas de wins déjà présent et donc créer un wins primaire, cela me retourne
    l'erreur 68, paramètre invalide.

    voilà le script

    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
     
    ' VB Script Document
    Option Explicit
     
    Dim i
    Dim imprimante_port_valide
    Dim IPdebut
    Dim IPfin
    Dim ip_masque
    Dim ip_point
    Dim message
    Dim winsmemoire
    Dim winsprimaire
    Dim winssecondaire
    Dim winsserver
     
    Dim objAdapter
    Dim objAdapters
    Dim objWMIService
     
    '************************************ Attention a l'adresse IP des machines ( 10.xxx.xxx.xxx ou 192.xxx.xxx.xxx ) ************************************
    ip_masque = "10."
    ip_masque = "192."
    ip_point = "."
    message = ""
    winsmemoire = ""
    winsprimaire = "10.20.30.40"
    winssecondaire = "10.10.10.10"
    winsserver = 0
     
    Set objAdapter = Nothing
    Set objAdapters = Nothing
    Set objWMIService  = Nothing
     
    Set objWMIService = GetObject("winmgmts:" & "!\\" & ip_point & "\root\cimv2")
     
    Set objAdapters = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
     
    For Each objAdapter in objAdapters
     
      IPdebut = LBound(objAdapter.IPAddress)
      IPfin = UBound(objAdapter.IPAddress)
     
      For i = IPdebut To IPfin
     
        imprimante_port_valide = InStr(1 , objAdapter.IPAddress(i) , ip_masque)
     
        If imprimante_port_valide > 0 Then
     
          WScript.Echo "Primary Server : * " & objAdapter.WINSPrimaryServer & " *" 
          WScript.Echo "Secondary Server : * " & objAdapter.WINSSecondaryServer & " *"
     
          If (objAdapter.WINSPrimaryServer) = "" Then
            winsserver = objAdapter.SetWINSServer(winsprimaire,winssecondaire)
          Else
            winsmemoire = objAdapter.WINSPrimaryServer
            winsserver = objAdapter.SetWINSServer(winsmemoire,winsprimaire)
          End If
     
          ' si la variable winsserver = 0, le changement a été fait, pas la peine de rebooter
          ' si la variable winsserver = 1, le changement a été fait, mais il faut rebooter
          ' si la variable winsserver >= 2, le changement n'a pas été fait, voir la documentation de microsoft sur internet
          ' exemple : la valeur 91 comme erreur indique que l'acces est refusé ( acces denied )
     
          message = message & "utilise l'adresse IP " & objAdapter.IPAddress(i) & vbCrLf & winsserver
     
        End If
     
      Next
     
    Next
     
    Wscript.Echo message
     
    Set objAdapter = Nothing
    Set objAdapters = Nothing
    Set objWMIService  = Nothing
    merci pour votre aide

    EDIT : je suis sur windows 10 pro 64 bits

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    août 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 26
    Points : 13
    Points
    13

    Par défaut

    voilà un nouveau script 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
     
    ' VB Script Document
    ' commande DOS en tant qu'administrateur => C:\Windows\System32\wscript.exe D:\lancer_connect_w7_wins-64.vbs
     
    Option Explicit
    'On Error Resume Next
     
    Dim ip_liste_indice
    Dim ip_liste_indice_debut
    Dim ip_liste_indice_fin
    Dim ip_masque
    Dim ip_point
    Dim ip_valide
    Dim message
    Dim winsmemoire
    Dim winsprimaire
    Dim winssecondaire
     
    Dim objNetCard
    Dim colNetCards
    Dim objWMIService
     
    ip_liste_indice = 0
    ip_liste_indice_debut = 0
    ip_liste_indice_fin = 0
    ip_masque = "192."
    ip_point = "."
    ip_valide = 0
    message = ""
    winsmemoire = ""
    winsprimaire = "10.10.10.10"
    winssecondaire = ""
     
    Set objNetCard = Nothing
    Set colNetCards = Nothing
    Set objWMIService = Nothing
     
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & ip_point & "\root\cimv2") 
     
    Set colNetCards = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") 
     
    For Each objNetCard in colNetCards
     
      ip_liste_indice_debut = LBound(objNetCard.IPAddress)
      ip_liste_indice_fin = UBound(objNetCard.IPAddress)
     
      For ip_liste_indice = ip_liste_indice_debut To ip_liste_indice_fin
     
        ip_valide = InStr(1,objNetCard.IPAddress(ip_liste_indice),ip_masque)
     
        If ip_valide > 0 Then
     
          'WScript.Echo "Primary Server : *" & objNetCard.WINSPrimaryServer & "*" 
          'WScript.Echo "Secondary Server : *" & objNetCard.WINSSecondaryServer & "*"
     
          winsmemoire = objNetCard.WINSPrimaryServer
     
          If winsmemoire <> "" Then
     
              '** informations: remarque l'ancien test ici n'était pas correct, If (objAdapter.WINSPrimaryServer) = "" Then, 
              'tester une chaîne vide n'est pas bon quand le WINS primaire est vide **
     
            'WScript.Echo "WINS primaire présent"
            objNetCard.SetWINSServer winsprimaire,winsmemoire
     
              '** information: remarque, j'avais voulu récupérer le code retour avec  une variable "winsserver = objNetCard.SetWINSServer winsprimaire,winsmemoire", 
              'visiblement cela ne fonctionne pas **
          Else
            'WScript.Echo "WINS primaire absent"
            objNetCard.SetWINSServer winsprimaire,winssecondaire
          End If
     
          message = message & "utilise l'adresse IP " & objNetCard.IPAddress(ip_liste_indice)
     
        End If
     
      Next
     
    Next
     
    'Wscript.Echo message
     
    Set objNetCard = Nothing
    Set colNetCards = Nothing
    Set objWMIService  = Nothing
     
    WScript.Quit
    Le code rectifié fonctionne.

    De toute façon, j'avais fait une autre solution plus radicale, modifier directement la base de registre et cela fonctionne aussi.

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

Discussions similaires

  1. Aide Sauvegarde VBS
    Par Azame dans le forum VBScript
    Réponses: 4
    Dernier message: 19/11/2009, 13h00
  2. [win server 2003] changer login connexion?
    Par jakol dans le forum IIS
    Réponses: 0
    Dernier message: 06/06/2009, 14h21
  3. Excel - Définir une cellule à l'aide d'une autre
    Par Aless75 dans le forum Excel
    Réponses: 7
    Dernier message: 24/09/2008, 12h58
  4. aide simplifié VBS
    Par al777 dans le forum VBScript
    Réponses: 2
    Dernier message: 30/03/2007, 01h39
  5. Aide Tableau vbs
    Par Travailleuuse06 dans le forum ASP
    Réponses: 2
    Dernier message: 29/12/2005, 15h01

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