PowerShellを使ってDNSサーバーのIPアドレスを設定したり、DHCPによる自動取得に変更する方法
本エントリーの目次
PowerShellを使って、WindowsのDNSサーバーのIPアドレスの設定を変更したい!
Windows PCを運用していると、DNSサーバーの交換やネットワーク構成の変更に伴い、DNSサーバーのIPアドレスの設定変更が必要となることがあります。
こういった場合、以下のようなネットワークの設定画面で、GUI操作を行って変更することが多いでしょう。
参考:WindowsにDNSサーバーを手動で複数(3つ以上)設定する方法とその仕組み
ですがGUIを使った設定操作ではなく、PowerShellを使ったコマンド操作でDNSサーバーのIPアドレスの設定を行いたい!
というケースもあるでしょう。
そこで今回は、PowerShellを使ってDNSサーバーのIPアドレスの設定を行ったり、DHCPサーバーから通知されたDNSサーバーのIPアドレスを使用するように構成する方法をご紹介します!
ネットワークインターフェースの一覧情報(インターフェースエイリアスやインターフェースインデックス)を確認する方法
PowerShellを使ってDNSサーバーのIPアドレスの設定を行う場合、設定対象のネットワークインターフェースのインターフェースエイリアスか、インターフェースインデックスが必要となります。
そのため、まずはこれらを調べる方法をご紹介しましょう。
PCが搭載しているネットワークインターフェースのインターフェースエイリアスや、インターフェースインデックスを調べたい場合、PowerShellを起動して『Get-NetIPInterface』コマンドレットを実行します。
すると以下のように、PCが搭載しているネットワークインターフェースが一覧表示され、それぞれのインターフェースエイリアスやインターフェースインデックスを確認できます。
1 2 3 4 5 6 7 8 9 10 | PS C:\> Get-NetIPInterface ifIndex InterfaceAlias AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp ConnectionState PolicyStore ------- -------------- ------------- ------------ --------------- ---- --------------- ----------- 5 イーサネット 2 IPv6 1500 20 Enabled Connected ActiveStore 1 Loopback Pseudo-Interface 1 IPv6 4294967295 75 Disabled Connected ActiveStore 5 イーサネット 2 IPv4 1500 20 Enabled Connected ActiveStore 1 Loopback Pseudo-Interface 1 IPv4 4294967295 75 Disabled Connected ActiveStore PS C:\> |
上記実行例では、コントロールパネルの『ネットワーク接続』画面で『イーサネット 2』と表示されているネットワークインターフェースのインターフェースエイリアスが、『イーサネット 2』。
そしてインターフェースインデックスが『5』であることが分かります。
先にも書いたとおり、PowerShellを使ってDNSサーバーのIPアドレスの設定を行う場合は、インターフェースエイリアスかインターフェースインデックスが必要であるため、どちらかの値を覚えておいてください。
以後の説明では、インターフェースエイリアスが『イーサネット 2』で、インターフェースインデックスが『5』のネットワークインターフェースに対し、設定を行う前提で設定方法を紹介しています。
PowerShellを使って、WindowsのDNSサーバーのIPアドレスを静的に(固定)設定する方法
PowerShellを使って、DNSサーバーのIPアドレスを静的に(固定)設定する場合は、『Set-DnsClientServerAddress』コマンドレットを使用します。
たとえばDNSサーバーのIPアドレスとして『192.168.1.101』を設定したい場合、以下コマンドを実行します。
1 | Set-DnsClientServerAddress -InterfaceAlias "イーサネット 2" -ServerAddress "192.168.1.101" |
『-ServerAddress』に一つのIPアドレスを指定した場合、そのIPアドレスが優先DNSサーバー※のIPアドレスとして設定されます。
またインターフェースエイリアス(-InterfaceAlias)ではなく、以下のようにインターフェースインデックス(-InterfaceIndex)を使って設定対象のネットワークインターフェースを指定することも可能です。
1 | Set-DnsClientServerAddress -InterfaceIndex 5 -ServerAddress "192.168.1.101" |
尚、『Set-DnsClientServerAddress』コマンドレットを使って設定を行う際は、管理者権限で起動したPowerShell上でコマンドを実行してください。
参考:Windows アプリケーションを管理者権限で起動・実行する方法
管理者権限で起動していないPowerShell上で『Set-DnsClientServerAddress』コマンドレットを実行した場合、『クライアントが CIM リソースへのアクセスを取得できませんでした。』というエラーが発生し、設定を行うことができません。
複数のDNSサーバー(優先DNSサーバーと代替DNSサーバー)を設定する方法
『Set-DnsClientServerAddress』コマンドレットを使い、複数のDNSサーバー(優先DNSサーバーと代替DNSサーバー※)を設定することも可能です。
たとえば優先DNSサーバーのIPアドレスを『192.168.1.101』、代替DNSサーバー1のIPアドレスを『192.168.1.102』、代替DNSサーバー2のIPアドレスを『192.168.1.103』としたい場合には、以下コマンドを実行してください。
1 | Set-DnsClientServerAddress -InterfaceAlias "イーサネット 2" -ServerAddress "192.168.1.101","192.168.1.102","192.168.1.103" |
※Windowsの優先DNSサーバーと代替DNSサーバーの動作の仕組みについては、以下を参照ください。
WindowsにDNSサーバーを手動で複数(3つ以上)設定する方法とその仕組み – Windowsに複数のDNSサーバーを設定した場合の動作の仕組みについて
PowerShellを使って、WindowsのDNSサーバーのIPアドレスを自動取得するように設定する方法
PowerShellを使って、DNSサーバーのIPアドレスを自動取得(DHCPサーバーが通知するDNSサーバーのIPアドレスを自動設定)する設定としたい場合にも、『Set-DnsClientServerAddress』コマンドレットを使用します。
このケースでは、『-ServerAddress』の代わりに『-ResetServerAddresses』を使用し、以下のようなコマンドを実行してください。
1 | Set-DnsClientServerAddress -InterfaceAlias "イーサネット 2" -ResetServerAddresses |
PowerShellを使って、WindowsのDNSサーバーのIPアドレスの設定状態を調べる方法
最後に、WindowsのDNSサーバーのIPアドレスの設定状態を、PowerShellを使って調べる方法についてもご紹介しておきましょう。
WindowsのDNSサーバーのIPアドレスの設定状態を調べたいときは、以下コマンドを実行してください。
1 | Get-DnsClientServerAddress |
『Get-DnsClientServerAddress』コマンドレットを実行すると、ネットワークインターフェース・AddressFamily(IPv4またはIPv6)ごとのDNSサーバーのIPアドレスを確認でき、『ServerAddresses』に、優先DNSサーバー,代替DNSサーバー1,代替DNSサーバー2 … といった記法で設定状態が表示されます。
『Set-DnsClientServerAddress』コマンドレットを使ってDNSサーバーの設定を変更した際は、『Get-DnsClientServerAddress』コマンドレットを使って、設定後の値が正しいかを確認しておくと良いでしょう。
以上、参考になさってくださーい!