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 vbs : 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 '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 vbs : 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 '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 :
Pour le second script, local ou distant, j'ai une erreur.Error : Permission refusée : 'GetObject'
Code : 800A0046
Pour le poste local, avec un ".", son ip ou son nom :
Bon, là çà peut se comprendre...Error : Les références utilisateurs ne peuvent être utilisées pour des connexions locales
Code : 80041064
Mais pour le poste distant :
Le PC distant étant ma VM, j'ai quand même tester sur une vrai machine, mais les erreurs sont les même...Error : Accès refusé
Code : 80070005
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
Partager