Accès à une machine distante pour changer les DNS clients
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 :
Code:
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
|
'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 :
Code:
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
|
'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 :
Citation:
Error : Permission refusée : 'GetObject'
Code : 800A0046
Pour le second script, local ou distant, j'ai une erreur.
Pour le poste local, avec un ".", son ip ou son nom :
Citation:
Error : Les références utilisateurs ne peuvent être utilisées pour des connexions locales
Code : 80041064
Bon, là çà peut se comprendre...
Mais pour le poste distant :
Citation:
Error : Accès refusé
Code : 80070005
Le PC distant étant ma VM, j'ai quand même tester sur une vrai machine, mais les erreurs sont les même...
Quelqu'un aurait la gentillesse de m'expliquer ce qui bloque ? Ou si quelqu'un a un autre code fonctionnel, je suis preneur ;p
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.
Merci d'avance.
Kcin