PowerShellを使ってネットワークアダプターの情報を確認・設定する方法
本エントリーの目次
PowerShellを使って、ネットワークアダプターの情報確認や設定を変更したい!
Windows PCの運用・管理を行っていると、ネットワークアダプターの情報確認や設定変更をコマンド操作を使って行いたい!
といったケースもあるでしょう。
たとえば複数のPCに対し、同様の設定変更を行う。
無線LANのネットワークアダプターを搭載しているか、MACアドレスは何か、といった情報を取得する、といったケースが考えられますね。
そこで今回は、PowerShellを使ってネットワークアダプターの各種情報を確認・取得する方法や、設定変更、再起動、有効化、無効化を行う方法をご紹介します!
PowerShellを使って、ネットワークアダプターの情報を取得・確認する方法
PCに搭載されているネットワークアダプターに関する各種情報を、PowerShellを使って取得する場合は『Get-NetAdapter』コマンドレットを使用します。
以前にこのブログでは、DNSサーバーのIPアドレスをPowerShellを使って設定する方法をご紹介しており、その中で『Get-NetIPInterface』コマンドレットを使用しています。
参考:PowerShellを使ってDNSサーバーのIPアドレスを設定したり、DHCPによる自動取得に変更する方法
『Get-NetAdapter』コマンドレットと『Get-NetIPInterface』コマンドレットは、一部の情報については、同じものを取得可能です。
ただし『Get-NetIPInterface』コマンドレットは、主にIPインターフェースに関する情報を取得するものであり、ネットワークアダプターに関する情報を取得する場合は『Get-NetAdapter』コマンドレットを使用します。
『Get-NetAdapter』コマンドレットを実行すると、以下のようにPCに搭載されているネットワークアダプターの情報を一覧形式で取得できます。
1 2 3 4 5 6 7 8 | PS C:\> Get-NetAdapter Name InterfaceDescription ifIndex Status MacAddress LinkSpeed ---- -------------------- ------- ------ ---------- --------- イーサネット 2 Microsoft Hyper-V Network Adapter #2 5 Up XX-XX-XX-XX-XX-XX 2 Gbps PS C:\> |
『Get-NetAdapter』コマンドレットの実行結果の『Name』は、ネットワークアダプターの名前を示すもので、コントロールパネルの『ネットワーク接続』の画面中の『名前』が表示されています。
また『InterfaceDescription』はインターフェースの説明であり、コントロールパネルの『ネットワーク接続』の画面中の『デバイス名』を表示しています。
『Status』は、ネットワークアダプターの状態を示すもので、『Up』であれば『有効』、『Disconnected』であれば『接続なし、未接続』※。
『Disabled』であれば『無効』状態です。
※コントロールパネルの『ネットワーク接続』の画面中では、『ネットワークケーブルが接続されていません』といった表記になっている状態です。
『Get-NetAdapter』コマンドレットの結果をソートして取得する方法
たくさんのネットワークアダプターを搭載しているPCや、Hyper-Vサーバーとして動作しているサーバーでは、『Get-NetAdapter』コマンドレットの結果が多数表示されます。
こういったPCに対して『Get-NetAdapter』コマンドレットを実行するケースでは、以下のように結果をソートして取得すると見やすくなるでしょう。
1 2 3 4 5 | #Get-NetAdapterの結果を、『Name』で昇順ソートした結果を取得する Get-NetAdapter | Sort-Object Name #Get-NetAdapterの結果を、『ifIndex』で昇順ソートした結果を取得する Get-NetAdapter | Sort-Object ifIndex |
特定の状態(有効、接続なし、無効)のネットワークアダプターのみを取得する方法
ネットワークアダプターが『有効』状態であるものだけを取得したい。
またはこれとは反対に、『無効』の状態のものだけを取得したい、というケースでは、以下のようなコマンドを使って結果を絞り込んで取得できます。
1 2 3 4 5 6 7 8 | #Get-NetAdapterの結果のうち、『Status』が『Up(有効)』の結果のみを取得する Get-NetAdapter | Where-Object {$_.Status -eq "Up"} #Get-NetAdapterの結果のうち、『Status』が『Disconnected(接続なし、未接続)』の結果のみを取得する Get-NetAdapter | Where-Object {$_.Status -eq "Disconnected"} #Get-NetAdapterの結果のうち、『Status』が『Disabled(無効)』の結果のみを取得する Get-NetAdapter | Where-Object {$_.Status -eq "Disabled"} |
すべてのネットワークアダプターの情報を取得する方法
実は、本エントリー執筆時点の最新のWindowsであるWindows 10 1909で使用できる『Get-NetAdapter』コマンドレットでは、明示しない場合はトンネルアダプターやVPNのアダプターが表示されません。(『Hidden』が『$True』のネットワークアダプターは表示されません。)
これら規定では非表示設定となっているネットワークアダプターも含めて表示したいときは、『-IncludeHidden』パラメーターを付与し、以下のようなコマンドを実行してください。
1 | Get-NetAdapter -IncludeHidden |
また、非表示設定のネットワークアダプターのみを取得したいときは、以下コマンドを実行すると良いでしょう。
1 | Get-NetAdapter -IncludeHidden | Where-Object {$_.Hidden -eq $True} | Sort-Object Name |
『Get-NetAdapter』コマンドレットを使い、詳細な情報を取得する方法
『Get-NetAdapter』コマンドレットを実行すると、取得可能な情報のうちの一部のみが表示されています。
より詳細な情報を取得したいときは、以下形式のコマンドを実行すると良いでしょう。
1 2 3 4 | Get-NetAdapter | Format-List -Property * #非表示設定のネットワークアダプターも含め、詳細な情報を取得する Get-NetAdapter -IncludeHidden | Format-List -Property * |
ただし取得される情報がかなり多いため、『-Name』や『-InterfaceAlias』、『-InterfaceIndex』パラメーターに対象のネットワークアダプターの情報を指定。
あらかじめ取得対象のネットワークアダプターを指定してのコマンド実行をおすすめします。
たとえば『-Name』や『-InterfaceAlias』が『イーサネット』、『-InterfaceIndex』が『3』のネットワークアダプターについて、詳細な情報を取得したい場合は、以下コマンドを実行してください。
1 2 3 4 5 | Get-NetAdapter -Name "イーサネット" | Format-List -Property * #または Get-NetAdapter -InterfaceAlias "イーサネット" | Format-List -Property * #または Get-NetAdapter -InterfaceIndex 3 | Format-List -Property * |
有線LANアダプター、または無線LANアダプターであるか、といった情報を取得する方法
『Get-NetAdapter』コマンドレットの結果に含まれる『PhysicalMediaType』には、有線LANアダプターであるか。
または無線LANアダプターであるか、といった区別を行うための情報が格納されています。
これらの情報を取得したいときは、以下コマンドを実行してください。
1 | Get-NetAdapter | Select-Object Name,PhysicalMediaType | Sort-Object Name |
『PhysicalMediaType』が『802.3』であれば有線LANアダプター、『Native 802.11』や『802.11』であれば無線LANアダプターとなります。
またHyper-Vの仮想ネットワークアダプターであれば、『Unspecified』となっています。※
そのため有線LANアダプターだけ、あるいは無線LANアダプターの情報だけを取得したいときは、以下のようなコマンドを実行すると良いでしょう。
1 2 3 4 5 | #有線LANのネットワークアダプターのみを取得する Get-NetAdapter | Where-Object {$_.PhysicalMediaType -like "*802.3*"} #無線LANのネットワークアダプターのみを取得する Get-NetAdapter | Where-Object {$_.PhysicalMediaType -like "*802.11*"} |
※VMwareが使用するネットワークアダプターである『VMware Virtual Ethernet Adapter』などは、仮想ネットワークアダプターではあるものの、『PhysicalMediaType』に『Unspecified』ではなく、『802.3』が格納されています。
ネットワークアダプターのうち、物理アダプターのみを取得する方法
Hyper-VサーバーやVMwareを利用している物理PCでは、物理的なネットワークアダプターと仮想的なネットワークアダプターの2種類が搭載、構成されています。
これらのうち、物理ネットワークアダプターのみを取得したいときは、『-Physical』パラメーターを併用してください。
1 | Get-NetAdapter -Physical |
尚、先にも書いたとおり『VMware Virtual Ethernet Adapter』などは、仮想ネットワークアダプターではあるものの、『PhysicalMediaType』に『Unspecified』ではなく、『802.3』が格納されています。
そのため、有線LAN接続の物理的なネットワークアダプターのみを取得したいときは、以下のようなコマンドを実行する必要があります。
1 | Get-NetAdapter -Physical | Where-Object {$_.PhysicalMediaType -like "*802.3*"} |
PowerShellを使って、ネットワークアダプターの名前を変更する方法
PowerShellを使って、ネットワークアダプターの名前を変更したいときは、『Rename-NetAdapter』コマンドレットを使用します。
具体的には、『Rename-NetAdapter -Name “<現在のアダプター名>” -NewName “<新しいアダプター名>”』という形式のコマンドを実行してください。
たとえば『イーサネット』というネットワークアダプターの名前を、『ethernet』に変更する場合は、以下のようなコマンドを実行します。
1 | Rename-NetAdapter -Name "イーサネット" -NewName "ethernet" |
尚、『Rename–NetAdapter』コマンドレットを実行した際、『アクセスが拒否されました。』というエラーメッセージが表示され、実行に失敗した場合には、管理者権限で起動したPowerShellで実行してください。
参考:Windows アプリケーションを管理者権限で起動・実行する方法
PowerShellを使って、ネットワークアダプターの設定を変更する方法
『Set-NetAdapter』コマンドレットを使用することで、ネットワークアダプターの設定のうち、MACアドレスやVLAN IDを変更することも可能です。
たとえば『 イーサネット』という名前のネットワークアダプターのVLAN IDを『10』に変更するケースでは、以下コマンドを実行します。
1 | Set-NetAdapter -Name "イーサネット" -VlanID 10 |
『Set-NetAdapter』コマンドレットの実行時は、実行確認メッセージが表示されます。
これを表示せずに、ただちにコマンドを実行したいときは、以下のように『-Confirm:$False』を付与してください。
1 | Set-NetAdapter -Name "イーサネット" -VlanID 10 -Confirm:$False |
PowerShellを使って、ネットワークアダプターの有効化・無効化・再起動を実行する方法
ネットワークアダプターの有効化や無効化、再起動を実行したいときは、以下例を参考にコマンド操作を行ってください。
1 2 3 4 5 6 7 8 | #実行確認をせず、ただちに『イーサネット』という名前のネットワークアダプターを無効化する Disable-NetAdapter -Name "イーサネット" -Confirm:$False #実行確認をせず、ただちに『イーサネット』という名前のネットワークアダプターを有効化する Enable-NetAdapter -Name "イーサネット" -Confirm:$False #実行確認をせず、ただちに『イーサネット』という名前のネットワークアダプターを再起動する Restart-NetAdapter -Name "イーサネット" -Confirm:$False |
以上、参考になさってくださーい!