Code vbs pour l'automatisation de la configuration réseau (en particulier du DNS
bozoteam01
Messages postés14Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention18 septembre 2009
-
2 juil. 2009 à 09:28
bozoteam01
Messages postés14Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention18 septembre 2009
-
15 juil. 2009 à 11:54
Bonjour à tous,
Je vous sollicite car je suis entrain de développer un vbs pour automatiser la config du dns (par la suite de d'autre info présent dans la carte réseau)
J'ai parcouru le forum et trouver des bouts de code pouvant m'interesser.
Mon problème je souhaite à partir d'un fichier .txt (comprennant le nom de mes serveurs) executer le script sur chaque serveur présent dans ce fichier.
Je voudrais également que mon code me renvoi une log avec le nom des serveurs qui n'on pas pu être renseigner ou qui n'ont pas pu etre contacter.
Je précise que je débute en VBS il est fort probable que des incohérences soit présent dans mon code.
Voila le bout de code que j'ai fait pour le moment.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Code VBS - Automatisation de la configuration réseau ''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit 'Je force la déclaration de variables
On Error Resume Next
Dim NomPC, objWMIService
Dim objItem, colItems, strComputer
Dim errEnable, strDNS
Dim strInFileTxt, strOutFileTxt, arrLineFicTxt, i
strDNS = array("*.*.*.*","*.*.*.*","*.*.*.*")'Tableau de chaîne, la premiére case du tableau contien l'adresse dns principale etc
strInFileTxt = "C:\Data\VBS\test.txt"
strOutFileTxt = "C:\Data\VBS\result.txt"
'Création d'un tableau contenant les lignes du fichier texte
arrLineFicTxt = FnReadFileTxt(strInFileTxt)
'Parcours du tableau
For i = 0 To UBound(arrLineFicTxt)
If arrLineFicTxt(i) <> vbNullString Then
Call IsConnectable(Trim(arrLineFicTxt(i)), objFile)
End If
Next
Function FnReadFileTxt(ArgFile)
Dim objFso, objFile, arrLineFicTxt
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFile = objFso.OpenTextFile(ArgFile, 1)
'arrLineFicTxt est un tableau contenant toutes les lignes du .txt
arrLineFicTxt = Split(objFile.ReadAll,vbCrLf)
objFile.Close
FnReadFileTxt = arrLineFicTxt
Set objFile = Nothing
Set objFso = Nothing
End Function
strComputer = "." 'Chaîne, permettant de dire que l'on utilisera l'ordinateur courant utiliser pour récupérer son nom ce n'est pas obligatoir mais pour plus de clarté...
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 'utilisation d'un appel GetObject pour se connecter au WMI root\cimv2.
''Recuperation du nom du poste
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)'Execution d'une requete dans le systéme en vue de récuperer le nom
'utilisation de la méthode ExecQuery pour mettre en route la classe Win32_Service.
For Each objItem in colItems 'Je parcour chaque objet rétourner par la requête jusqu'a ce que je retrouve caption pour affecter le resultat a NomPC
NomPC = objItem.Caption
Next
Set objWMIService = Nothing 'Libere le contenu de objWMIService pour le remettre a 0
Set colItems = Nothing 'Idem
Set objWMIService = getObject("winmgmts:\\" & NomPC & "\root\cimv2")
Set colItems objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled true",,48)
For Each objItem in colItems
''configure les adresses DNS
errEnable = objItem.SetDNSServerSearchOrder(strDNS)
Next
A voir également:
Code vbs pour l'automatisation de la configuration réseau (en particulier du DNS
bozoteam01
Messages postés14Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention18 septembre 2009 2 juil. 2009 à 10:29
Merci j'avais vu cette petite chose
Je suis admin sur toutes les machines comme il y a une certaine quantité du serveur je ne voudrais pas rentrer manuellement le user et le mot de passe.
J'ai trouver ce code : pourrait -il m'aider
Je me suis mit au vbs il y a 2 jours pardonnez moi pour certaines question que je pourrais poser qui vous semble bête.
Set objArgs=WScript.Arguments
Set fso=CreateObject("Scripting.FileSystemObject")
filename_liste=objArgs(0)
set fic_liste = fso.OpenTextFile(filename_liste, 1, true)
while not fic_liste.AtEndOfStream
On Error Resume Next
strComputer=fic_liste.readline
str_out=strComputer & "; "
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set ObjService = objLocator.ConnectServer(strComputer, "root\CIMV2", "domain\username", "password")
Vous n’avez pas trouvé la réponse que vous recherchez ?
bozoteam01
Messages postés14Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention18 septembre 2009 3 juil. 2009 à 11:39
Jean marc grâce à ton ti tuto j'ai réussi à utiliser la méthode avec inputbox.
Je voudrais maintenant automatiser le renseignement DNS grace a un fichier txt (qui contient tous les nom de serveurs)pour que plusieurs serveur soit configurer automatiquement sans devoir lancer le programme a chaque fois.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Code VBS - Automatisation de la configuration réseau ''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit 'Je force la déclaration de variables
On Error Resume Next
Dim NomPC, objWMIService
Dim objItem, colItems, strComputer
Dim errEnable, strDNS
Dim fso, objArgs, fic_liste, objLocator, ObjService
Dim str_out
Set objArgs=WScript.Arguments
Set fso=CreateObject("Scripting.FileSystemObject")
filename_liste=objArgs(0)
set fic_liste = fso.OpenTextFile(filename_liste, 1, true)
while not fic_liste.AtEndOfStream
On Error Resume Next
strComputer=fic_liste.readline
str_out=strComputer & "; "
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set ObjService = objLocator.ConnectServer(strComputer, "root\CIMV2", "pcnp\jlebas", "Password")
strDNS = array("*.*.*.*","*.*.*.*","*.*.*.*")'Tableau de chaîne, la premiére case du tableau contien l'adresse dns principale etc
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") 'utilisation d'un appel GetObject pour se connecter au WMI root\cimv2.
''Recuperation du nom du poste
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)'Execution d'une requete dans le systéme en vue de récuperer le nom
'utilisation de la méthode ExecQuery pour mettre en route la classe Win32_Service.
For Each objItem in colItems 'Je parcour chaque objet rétourner par la requête jusqu'a ce que je retrouve caption pour affecter le resultat a NomPC
NomPC = objItem.Caption
Next
Set objWMIService = Nothing 'Libere le contenu de objWMIService pour le remettre a 0
Set colItems = Nothing 'Idem
Set objWMIService = getObject("winmgmts:\" & NomPC & "\root\cimv2") Set colItems objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled true",,48)
For Each objItem in colItems
''configure les adresses DNS
errEnable = objItem.SetDNSServerSearchOrder(strDNS)
Next
Wend
bozoteam01
Messages postés14Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention18 septembre 2009 13 juil. 2009 à 10:11
bonjour à tous ,
voila mon script donc qui me demande le nom de l'utilisateur, le mot de passe ainsi que le nom du serveur
je souhaiterai ne plus renseigner le nom du serveur et lui donner une liste de serveur présent dans un fichier txt sous la forme :
nomserveur1
nomserveur2
nomserveur3
etc...
je souhaiterai que le script s'éxécute automatiquement sur chaque serveur
merci par avance
voila ce que moi j'ai fait.
' VB Script Document
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' Code VBS - Automatisation de la configuration réseau ''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
On Error Resume Next
Const WbemAuthenticationLevelPktPrivacy = 6
Set objNetwork = CreateObject("Wscript.Network")
strLocalComputer = objNetwork.ComputerName
strCredentials = InputBox _
("Rentrer le nom de l'utilisateur, suivis d'un espace, puis du Mot de passe:", _
"Entrer le nom de l'utilisateur",objNetwork.UserName )
If strCredentials = "" Then
Wscript.Quit
End If
arrCredentials = Split(strCredentials," ")
strUser = arrCredentials(0)
strPassword = arrCredentials(1)
strNamespace = "root\cimv2"
strComputer = InputBox _
("Merci de renseigner le Nom du serveur:", _
"Entrer le nom du serveur", objNetwork.ComputerName)
If strComputer = "" Then
Wscript.Quit
End If
Dim NomPC, objWMIService
Dim objItem, colItems, strComputer
Dim errEnable, strDNS
strDNS = array("*.*.*.*","*.*.*.*","*.*.*.*")Tableau de chaîne, la premiére case du tableau contien l'adresse dns principale etc
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") 'utilisation d'un appel GetObject pour se connecter au WMI root\cimv2.
''Recuperation du nom du poste
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)'Execution d'une requete dans le systéme en vue de récuperer le nom
'utilisation de la méthode ExecQuery pour mettre en route la classe Win32_Service.
For Each objItem in colItems 'Je parcour chaque objet rétourner par la requête jusqu'a ce que je retrouve caption pour affecter le resultat a NomPC
NomPC = objItem.Caption
Next
Set objWMIService = Nothing 'Libere le contenu de objWMIService pour le remettre a 0
Set colItems = Nothing 'Idem
Set objWMIService = getObject("winmgmts:\" & NomPC & "\root\cimv2")Set colItems objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled true",,48)
For Each objItem in colItems
''configure les adresses DNS
errEnable = objItem.SetDNSServerSearchOrder(strDNS)
Next
bozoteam01
Messages postés14Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention18 septembre 2009 15 juil. 2009 à 11:54
Est-il possible pour strComputer de lui définir une liste ? ou de lui attribuer un tableau contenant la liste de mes serveurs. on pourrais faire une boucle la dessus avez vous une idée ?