Script vbs : Accès à une machine distante pour changer les DNS clients.
cs_kcin
Messages postés63Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention26 novembre 2012
-
6 juin 2012 à 10:38
cs_kcin
Messages postés63Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention26 novembre 2012
-
6 juin 2012 à 10:46
Bonjour à tous,
J'essaye d'avoir accès à une machine distante pour modifier les DNS clients.
Le parc informatique de ma société contient environ +50 postes, répartis dans toute la France, je vais donc pas m'amuser à faire les trajets avec ma voiture ;p Et aucun moyen de configurer le serveur DHCP pour le faire.
Bref.
J'avais trouvé des scripts vbs qui permettaient l'accès à distance :
1er script :
'On Error Resume Next
Computers = array( "A38WS-LYINF9" )
NewDNS = array( "10.0.0.10" )
For Each Computer In Computers
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & Computer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objNicConfig In colNicConfigs
strDNSServerSO = ""
If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
For Each strDNSServer In objNicConfig.DNSServerSearchOrder
strDNSServerSO = strDNSServerSO & strDNSServer & ","
Next
End If
If strDNSServerSO<> "" Then
'si strDNSServerSO n'est pas vide nous sommes dans la bonne carte réseau (dans le cas où une seule carte réseau est configurée)
'set les nouvelles valeurs
objNicConfig.SetDNSServerSearchOrder( NewDNS )
End If
Next
Next
2ième script :
'On Error Resume Next
Computers = array( "A38WS-LYINF9" )
NewDNS = array( "10.0.0.10" )
strDomain = "monDomaine"
strUser = InputBox("Entrez votre login utilisateur :")
strPassword = InputBox("Saisissez votre mot de passe :")
For Each Computer In Computers
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer(Computer, "root\cimv2", strUser, strPassword, "MS_409", "ntlmdomain:" + strDomain)
objWMIService.Security_.ImpersonationLevel = 3
Set colNicConfigs = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objNicConfig In colNicConfigs
strDNSServerSO = ""
If Not IsNull(objNicConfig.DNSServerSearchOrder) Then
For Each strDNSServer In objNicConfig.DNSServerSearchOrder
strDNSServerSO = strDNSServerSO & strDNSServer & ","
Next
End If
If strDNSServerSO<> "" Then
'si strDNSServerSO n'est pas vide nous sommes dans la bonne carte réseau (dans le cas où une seule carte réseau est configurée)
'set les nouvelles valeurs
objNicConfig.SetDNSServerSearchOrder( NewDNS )
End If
Next
Next
Concernant le premier script, quand je remplace le contenu de Computers par array( "." ), l’exécution se fait sans soucis sur mon poste et les DNS sont changées.
Mais dès que je met le nom ou l'ip d'un PC distant ( en l'occurence ma VM ), j'obtiens une erreur :
cs_kcin
Messages postés63Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention26 novembre 2012 6 juin 2012 à 10:46
J'ai oublié de préciser :
Et en passant par les GPO, mon responsable n'apprécie pas. Sa raison, car la GPO modifie une entrée de la base de registre et non pas les données saisies dans les propriétés de la carte réseau.