2016-06-16 8 views
0

私は私のDNSを設定して、DNSサーバを切り替えるには、このスクリプトを使用しています:私は1つのネットワークに接続されていた場合PowerShellを使用して複数のネットワークのDNSサーバーを一度に設定できますか?

$nic = get-wmiobject win32_networkadapterconfiguration | where {$_.IPEnabled -eq $true -and $_.DHCPEnabled -eq $true} 

foreach($n in $nic){ 

    if($nic.DNSserverSearchOrder -eq "172.xxxxxxxx") 
    { 
     $servers = "8.8.8.8","8.8.4.4" 
     $nic.SetDNSServerSearchOrder($servers) 
    } 
    else 
    { 
     $servers = "172.xxxxxxxx","172.xxxxxxxx" 
     $nic.SetDNSServerSearchorder($servers) 
    } 
} 

は今、このスクリプトが正常に動作します。私は複数のネットワークに接続されていた場合、これはエラーをスローします。これは一つのネットワークのために、と私はそれらをループしています二つのネットワークのために動作するかどう

"Method Invocation failed because [system.object[]] doesnt contain a method names 'setDNSsearchorder'".

は今、なぜこれが動作しませんか?

答えて

0

foreach($n in $nic)でNICをループしていますが、次に$nicでメソッドを実行しています。複数のNICがある場合、$nicは配列([system.object []])になるため、$nでメソッドを実行する必要があります。

foreach($n in $nic){ 
    if($n.DNSserverSearchOrder -eq "172.xxxxxxxx") 
    { 
     $servers = "8.8.8.8","8.8.4.4" 
     $n.SetDNSServerSearchOrder($servers) 
    } 
    else 
    { 
     $servers = "172.xxxxxxxx","172.xxxxxxxx" 
     $n.SetDNSServerSearchorder($servers) 
    } 
} 

唯一のNIC、$nicがある場合は、代わりに一つだけのNICがある場合にはそれが動作する理由は、これらのオブジェクトの配列、の方法をサポートするオブジェクトの型になります。

+0

このような恥です。 :(基本的なコーディングエラー。見た目が近づくほど、私は見たことが少ない。:( –

関連する問題