Set DNS resolvers via Powershell & WMI

By Andrei Ungureanu - Last updated: Friday, September 26, 2014 - Save & Share - Leave a Comment

Ca tot am discutat despre cum sa obtinem lista de servere DNS setate, acum a venit timpul sa vedem cum putem sa modificam informatia asta.

Incepem tot printr-o conexiune WMI:

$ipconfig = GWMI –class win32_networkadapterconfiguration –computer “computername” –filter “ipenabled = $true”

Si ne pregatim un array cu noile setari:

$dnsarray = @("192.168.111.8","10.0.0.101")

image

Iar mai departe folosim metoda SetDNSServerSearchOrder():

$ipconfig.SetDNSServerSearchOrder($dnsarray)

image

Atentie la ReturnValue. Trebuie sa fie 0, altfel ceva nu a mers cum trebuie.

Si daca in articolul precedent am scris si despre noile cmdlet-uri din Windows 8 si 2012 o sa prezint si varianta asta.

Cmdlet-ul ce trebuie folosit este SetDNSClientServerAddress:

SetDNSClientServerAddress –cimsession “computername” –interfacealias “Ethernet” –serveraddress (“x.x.x.x”, “y.y.y.y”)

image

Prin exemplul asta atrag si atentia asupra importantei denumirii adaptoarelor de retea. E bine ca acestea sa fie standardizate pe toate serverele pentru a putea automatiza taskuri ce implica un numar mare de servere. Cand toate serverele au adaptorul principal (de pe care pleaca si queryurile de DNS) denumit sa zicem LAN1, atunci va fi foarte usor sa scrii un cod ce va targeta doar un adaptor de pe server, iar ala va fi cel corect.

 

PS: Stiu si de NETSH dar nu am fost niciodata fan :).

Posted in Scripting • Tags: , , Top Of Page

Write a comment