scenariusz: trzeba napisać skrypt, który będzie wyłączał rejestrację DNS dla interfejsów LANowych. służy do tego metoda SetDynamicDNSRegistration klasy Win32_NetworkAdapterConfiguration. pozostaje problem – jak znaleźć owe interfejsy LANowe, bo zwykłe wylistowanie interfejsów pokaże ich multum… są dwa warunki, które trzeba sprawdzić – odfiltrować te, które nie są IPEnabled oraz te, które nie są Wired. i tu się zaczynają schody – IPEnabled to parametr klasy Win32_NetworkAdapterConfiguration a typ interfejsu pokazuje atrybut AdapterTypeID klasy Win32_NetworkAdapter.

sprawdzenie obu tych warunków byłoby niemożliwe [mega-złożone] gdyby nie klasy asocjacyjne – w tym przypadku Win32_NetworkAdapterSetting, która łączy obie wcześniej wymienione. klasy asocjacyjne pobierają atrybuty dla obu klas dla danego urządzenia i publikują je w dwóch gałęziach – element oraz setting. skrypt finalnie wygląda tak:

function setDNSdynamicReg{
    gwmi -Class win32_networkAdapterSetting|%{
        #adaptertypeid = 0 - wired card
        #ipenabled - filter out non-ip shit 
         if( (([wmi]$_.element).adaptertypeid -eq 0) -and (([wmi]$_.setting).ipenabled -eq $true) ) {
             echo "[debug] adapter type: $($([wmi]$_.element).adaptertype)"
             echo "[debug] zmieniam parametr dla: $($([wmi]$_.setting).caption)"
             $err=([wmi]$_.setting).SetDynamicDNSRegistration($false)
             $err.ReturnValue
        } 
    }
    return "done"
}
setDNSdynamicReg

proste, nie? a teraz ciekawostka na koniec. na MSDN wyraźnie i jasno opisane są ‘adaptertype’ oraz ‘adaptertypeid’.. a oto jak przedstawia się moja karta WiFi /:

PS C:\_ScriptZ> .\setDynDNSReg.ps1
[debug] adapter type: Ethernet 802.3
[debug] zmieniam parametr dla: [00000000] Karta Intel(R) Centrino(R) Wireless-N 1000

eN.

Spread the love

Comments (2)

  1. dkurtan

    Odpowiedz

    netsh wlan show interfaces
    netsh interface ip set dns name=xxx register=none

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.