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