ネットワークトラブルシューティングに役立つ主なPowerShellコマンドは以下の通りです。
※私の備忘メモも兼ねた記事です。
Test-NetConnection - ホスト名またはIP アドレスへの接続、ポート接続の状態、ルーティングが正しく構成されているかどうかを確認します。
Test-Connection - ネットワーク上のコンピューターへの ICMP Echo リクエストを送信し、その応答を確認します。
Get-NetAdapter - ローカル コンピューター上のネットワーク アダプターの情報を表示します。
Get-NetIPAddress - ローカル コンピューター上の IP アドレスの情報を表示します。
Get-NetTCPConnection - 現在の TCP 接続の情報を表示します。
Get-NetRoute - ルーティング テーブルの情報を表示します。
Get-NetNeighbor - ネットワーク上の隣接するノードの情報を表示します。
Resolve-DnsName - ドメイン名を解決し、IP アドレスを表示します。
Test-NetConnectionの使用例
Test-NetConnection コマンドレットを使用して、TCP 接続をテストする例です。
Test-NetConnection www.example.com -Port 80
このコマンドを実行すると、www.example.com の TCP ポート 80 に対して接続を試みます。結果は、以下のように表示されます。
Copy code
ComputerName : www.example.com
RemoteAddress : 93.184.216.34
RemotePort : 80
InterfaceAlias : Ethernet
SourceAddress : 192.168.1.10
PingSucceeded : True
PingReplyDetails (RTT) : 31 ms
TcpTestSucceeded : True
-InformationLevel オプションを使用することで、表示する情報の詳細度を指定することができます。例えば、Detailed を指定すると、より詳細な情報が表示されます。
Test-NetConnection www.example.com -Port 80 -InformationLevel Detailed
このコマンドを実行すると、www.example.com の TCP ポート 80 に対して接続を試みます。結果は、以下のように表示されます。
Copy code
ComputerName : www.example.com
RemoteAddress : 93.184.216.34
RemotePort : 80
InterfaceAlias : Ethernet
SourceAddress : 192.168.1.10
PingSucceeded : True
PingReplyDetails (RTT) : 31 ms
TcpTestSucceeded : True
-CommonTCPPort オプションを使用することで、一般的な TCP ポート番号を使用して接続を試みることができます。例えば、以下のコマンドは、www.example.com の TCP ポート 80 に対して接続を試みます。
Test-NetConnection www.example.com -CommonTCPPort HTTP
このコマンドを実行すると、www.example.com の TCP ポート 80 に対して接続を試みます。結果は、以下のように表示されます。
Copy code
ComputerName : www.example.com
RemoteAddress : 93.184.216.34
RemotePort : 80
InterfaceAlias : Ethernet
SourceAddress : 192.168.1.10
PingSucceeded : True
PingReplyDetails (RTT) : 31 ms
TcpTestSucceeded : True
Test-Connectionの使用例
Test-Connection コマンドレットを使用して、ホストに ping を送信して応答を確認する例です。
Test-Connection www.example.com
このコマンドを実行すると、www.example.com に ping を送信し、4回の ping パケットを送信して応答を確認します。結果は、以下のように表示されます。
Source Destination IPV4Address Bytes Time(ms)
------ ----------- ----------- ----- --------
MyComputer www.example.com 93.184.216.34 32 32.54
MyComputer www.example.com 93.184.216.34 32 32.29
MyComputer www.example.com 93.184.216.34 32 31.87
MyComputer www.example.com 93.184.216.34 32 31.68
-Count オプションを使用することで、送信する ping パケットの数を指定することができます。例えば、2回の ping パケットを送信して応答を確認する場合は、以下のようにコマンドを実行します。
Test-Connection www.example.com -Count 2
このコマンドを実行すると、www.example.com に対して2回の ping パケットを送信し、応答を確認します。結果は、以下のように表示されます。
Source Destination IPV4Address Bytes Time(ms)
------ ----------- ----------- ----- --------
MyComputer www.example.com 93.184.216.34 32 32.54
MyComputer www.example.com 93.184.216.34 32 32.29
-Quiet オプションを使用することで、結果を表示せずに、成功した場合は $true、失敗した場合は $false を返すこともできます。
Test-Connection www.example.com -Quiet
このコマンドを実行すると、www.example.com に ping を送信し、応答を確認せずに、成功した場合は $true、失敗した場合は $false を返します。
Get-NetAdapterの使用例
Get-NetAdapter コマンドレットを使用して、Windows マシン上のネットワークアダプター情報を取得する例です。
Get-NetAdapter
このコマンドを実行すると、Windows マシンにインストールされているすべてのネットワークアダプターの情報が表示されます。例えば、Ethernet アダプターに関する情報は以下のように表示されます。
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
Ethernet Intel(R) Ethernet Connection I219-V 4 Up 00-11-22-33-44-55 1 Gbps
また、特定のアダプターに関する情報を取得する場合は、-Name オプションを使用します。
Get-NetAdapter -Name Ethernet
このコマンドを実行すると、アダプター名が "Ethernet" のアダプターに関する情報が表示されます。
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
Ethernet Intel(R) Ethernet Connection I219-V 4 Up 00-11-22-33-44-55 1 Gbps
さらに、特定のステータスに関する情報を取得する場合は、-Status オプションを使用します。
Get-NetAdapter -Status Up
このコマンドを実行すると、ステータスが "Up" のアダプターに関する情報が表示されます。同様に、ステータスが "Down" のアダプターに関する情報を取得する場合は、-Status Down と指定します。
Get-NetIPAddressの使用例
Get-NetIPAddress コマンドレットを使用して、Windows マシン上の IP アドレス情報を取得する例です。
Get-NetIPAddress
このコマンドを実行すると、Windows マシンに設定されているすべての IP アドレス情報が表示されます。例えば、IPv4 アドレスに関する情報は以下のように表示されます。
IPAddress : 192.168.1.100
InterfaceIndex : 4
InterfaceAlias : Ethernet
AddressFamily : IPv4
Type : Unicast
PrefixLength : 24
PrefixOrigin : Dhcp
SuffixOrigin : Dhcp
AddressState : Preferred
ValidLifetime : 23:59:25
PreferredLifetime : 23:59:25
SkipAsSource : False
PolicyStore : ActiveStore
また、特定のインターフェイスに関する情報を取得する場合は、-InterfaceIndex オプションを使用します。
Get-NetIPAddress -InterfaceIndex 4
このコマンドを実行すると、インターフェイス番号が 4 のインターフェイスに関する IP アドレス情報が表示されます。
IPAddress : 192.168.1.100
InterfaceIndex : 4
InterfaceAlias : Ethernet
AddressFamily : IPv4
Type : Unicast
PrefixLength : 24
PrefixOrigin : Dhcp
SuffixOrigin : Dhcp
AddressState : Preferred
ValidLifetime : 23:59:25
PreferredLifetime : 23:59:25
SkipAsSource : False
PolicyStore : ActiveStore
さらに、特定のアドレスファミリーに関する情報を取得する場合は、-AddressFamily オプションを使用します。
Get-NetIPAddress -AddressFamily IPv6
このコマンドを実行すると、IPv6 アドレスに関する情報が表示されます。同様に、IPv4 アドレスに関する情報を取得する場合は、-AddressFamily IPv4 と指定します。
Get-NetTCPConnectionの使用例
Get-NetTCPConnection コマンドレットを使用して、Windows マシン上の TCP コネクション情報を取得する例です。
Get-NetTCPConnection
このコマンドを実行すると、Windows マシン上で現在開いているすべての TCP コネクション情報が表示されます。例えば、特定のローカルポート番号に関する情報は以下のように表示されます。
LocalAddress LocalPort RemoteAddress RemotePort State AppliedSetting OwningProcess
------------ --------- ------------- ---------- ----- -------------- ------------
192.168.1.100 56708 192.0.2.1 443 Established 3164
また、特定の状態にある TCP コネクション情報を取得する場合は、-State オプションを使用します。
Get-NetTCPConnection -State Established
このコマンドを実行すると、現在「Established」(接続されている)状態の TCP コネクション情報が表示されます。
LocalAddress LocalPort RemoteAddress RemotePort State AppliedSetting OwningProcess
------------ --------- ------------- ---------- ----- -------------- ------------
192.168.1.100 56708 192.0.2.1 443 Established 3164
さらに、特定のプロセスによって所有される TCP コネクション情報を取得する場合は、-OwningProcess オプションを使用します。
Get-NetTCPConnection -OwningProcess 3164
このコマンドを実行すると、プロセス ID が 3164 のプロセスによって所有される TCP コネクション情報が表示されます。
Get-NetRouteの使用例
Get-NetRoute コマンドレットを使用して、Windows マシンのルーティングテーブルを取得する例です。
Get-NetRoute
このコマンドを実行すると、Windows マシンのすべてのルート情報が表示されます。例えば、IPv4 アドレス 192.168.0.0/24 に関する情報は以下のように表示されます。
ifIndex DestinationPrefix NextHop RouteMetric ifMetric PolicyStore
------- ----------------- ------- ----------- -------- -----------
21 192.168.0.0/24 192.168.0.1 256 35 ActiveStore
また、特定の IP アドレスに関する情報を取得する場合は、-DestinationPrefix オプションを使用します。
Get-NetRoute -DestinationPrefix 192.168.0.0/24
このコマンドを実行すると、IPv4 アドレス 192.168.0.0/24 に関するルート情報が表示されます。
ifIndex DestinationPrefix NextHop RouteMetric ifMetric PolicyStore
------- ----------------- ------- ----------- -------- -----------
21 192.168.0.0/24 192.168.0.1 256 35 ActiveStore
さらに、インターフェースのエイリアスを指定して情報を取得する場合は、-InterfaceAlias オプションを使用します。
Get-NetRoute -InterfaceAlias "イーサネット"
このコマンドを実行すると、イーサネットに関するルート情報が表示されます。
Get-NetNeighborの使用例
Get-NetNeighbor コマンドレットを使用して、Windows マシンの近隣情報を取得する例です。
Get-NetNeighbor
このコマンドを実行すると、Windows マシンのすべての近隣情報が表示されます。例えば、IPv4 アドレス 192.168.0.1 に関する情報は以下のように表示されます。
ifIndex IPAddress LinkLayerAddress State PolicyStore
------- --------- ---------------- ----- -----------
14 fe80::20c:29ff:fe22:b55b%14 00-0c-29-22-b5-5b Unreachable ActiveStore
6 192.168.0.1 00-0c-29-22-b5-5b Permanent ActiveStore
また、特定の IP アドレスに関する情報を取得する場合は、-IPAddress オプションを使用します。
Get-NetNeighbor -IPAddress 192.168.0.1
このコマンドを実行すると、IP アドレス 192.168.0.1 に関する近隣情報が表示されます。
ifIndex IPAddress LinkLayerAddress State PolicyStore
------- --------- ---------------- ----- -----------
6 192.168.0.1 00-0c-29-22-b5-5b Permanent ActiveStore
さらに、インターフェースのエイリアスを指定して情報を取得する場合は、-InterfaceAlias オプションを使用します。
Get-NetNeighbor -InterfaceAlias "イーサネット"
このコマンドを実行すると、イーサネットに関する近隣情報が表示されます。
Resolve-DnsNameの使用例
Resolve-DnsName コマンドレットを使用して example.com の A レコードを解決する例です。
Resolve-DnsName example.com
このコマンドを実行すると、example.com の A レコードの情報が表示されます。
Name Type TTL Section IPAddress
---- ---- --- ------- ---------
example.com A 3600 Answer 93.184.216.34
また、特定の DNS サーバーを使用して問い合わせる場合は、-Server オプションを使用します。
Resolve-DnsName example.com -Server 8.8.8.8
このコマンドを実行すると、Google Public DNS を使用して example.com の A レコードの情報が表示されます。
Name Type TTL Section IPAddress
---- ---- --- ------- ---------
example.com A 3515 Answer 93.184.216.34
さらに、すべての DNS レコードを表示する場合は、-AllRecords オプションを使用します。
Resolve-DnsName example.com -AllRecords
このコマンドを実行すると、example.com のすべての DNS レコードの情報が表示されます。