ネットワークトラブルシューティングに役立つPowerShellコマンド

ネットワークトラブルシューティングに役立つ主な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 接続をテストする例です。

```mathematica
Test-NetConnection www.example.com -Port 80
```
このコマンドを実行すると、www.example.com の TCP ポート 80 に対して接続を試みます。結果は、以下のように表示されます。

```yaml
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 を指定すると、より詳細な情報が表示されます。

```mathematica
Test-NetConnection www.example.com -Port 80 -InformationLevel Detailed
```
このコマンドを実行すると、www.example.com の TCP ポート 80 に対して接続を試みます。結果は、以下のように表示されます。

```yaml
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 に対して接続を試みます。

```mathematica
Test-NetConnection www.example.com -CommonTCPPort HTTP
```
このコマンドを実行すると、www.example.com の TCP ポート 80 に対して接続を試みます。結果は、以下のように表示されます。

```yaml
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 を送信して応答を確認する例です。

```mathematica
Test-Connection www.example.com
```
このコマンドを実行すると、www.example.com に ping を送信し、4回の ping パケットを送信して応答を確認します。結果は、以下のように表示されます。

```mathematica
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 パケットを送信して応答を確認する場合は、以下のようにコマンドを実行します。

```mathematica
Test-Connection www.example.com -Count 2
```
このコマンドを実行すると、www.example.com に対して2回の ping パケットを送信し、応答を確認します。結果は、以下のように表示されます。

```mathematica
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 を返すこともできます。

```mathematica
Test-Connection www.example.com -Quiet
```
このコマンドを実行すると、www.example.com に ping を送信し、応答を確認せずに、成功した場合は $true、失敗した場合は $false を返します。

# Get-NetAdapterの使用例
Get-NetAdapter コマンドレットを使用して、Windows マシン上のネットワークアダプター情報を取得する例です。

```mathematica
Get-NetAdapter
```
このコマンドを実行すると、Windows マシンにインストールされているすべてのネットワークアダプターの情報が表示されます。例えば、Ethernet アダプターに関する情報は以下のように表示されます。

```mathematica
Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Ethernet                  Intel(R) Ethernet Connection I219-V        4 Up           00-11-22-33-44-55    1 Gbps
```
また、特定のアダプターに関する情報を取得する場合は、-Name オプションを使用します。

```mathematica
Get-NetAdapter -Name Ethernet
```

このコマンドを実行すると、アダプター名が "Ethernet" のアダプターに関する情報が表示されます。

```mathematica
Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Ethernet                  Intel(R) Ethernet Connection I219-V        4 Up           00-11-22-33-44-55    1 Gbps
```
さらに、特定のステータスに関する情報を取得する場合は、-Status オプションを使用します。

```mathematica
Get-NetAdapter -Status Up
```
このコマンドを実行すると、ステータスが "Up" のアダプターに関する情報が表示されます。同様に、ステータスが "Down" のアダプターに関する情報を取得する場合は、-Status Down と指定します。

# Get-NetIPAddressの使用例
Get-NetIPAddress コマンドレットを使用して、Windows マシン上の IP アドレス情報を取得する例です。

```mathematica
Get-NetIPAddress
```
このコマンドを実行すると、Windows マシンに設定されているすべての IP アドレス情報が表示されます。例えば、IPv4 アドレスに関する情報は以下のように表示されます。

```yaml
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 オプションを使用します。

```mathematica
Get-NetIPAddress -InterfaceIndex 4
```
このコマンドを実行すると、インターフェイス番号が 4 のインターフェイスに関する IP アドレス情報が表示されます。

```yaml
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 オプションを使用します。

```mathematica
Get-NetIPAddress -AddressFamily IPv6
```
このコマンドを実行すると、IPv6 アドレスに関する情報が表示されます。同様に、IPv4 アドレスに関する情報を取得する場合は、-AddressFamily IPv4 と指定します。

# Get-NetTCPConnectionの使用例
Get-NetTCPConnection コマンドレットを使用して、Windows マシン上の TCP コネクション情報を取得する例です。

```mathematica
Get-NetTCPConnection
```
このコマンドを実行すると、Windows マシン上で現在開いているすべての TCP コネクション情報が表示されます。例えば、特定のローカルポート番号に関する情報は以下のように表示されます。

```mathematica
LocalAddress                        LocalPort RemoteAddress                       RemotePort State       AppliedSetting OwningProcess
------------                        --------- -------------                       ---------- -----       -------------- ------------
192.168.1.100                       56708     192.0.2.1                           443        Established                  3164
```
また、特定の状態にある TCP コネクション情報を取得する場合は、-State オプションを使用します。

```mathematica
Get-NetTCPConnection -State Established
```
このコマンドを実行すると、現在「Established」（接続されている）状態の TCP コネクション情報が表示されます。

```mathematica
LocalAddress                        LocalPort RemoteAddress                       RemotePort State       AppliedSetting OwningProcess
------------                        --------- -------------                       ---------- -----       -------------- ------------
192.168.1.100                       56708     192.0.2.1                           443        Established                  3164
```
さらに、特定のプロセスによって所有される TCP コネクション情報を取得する場合は、-OwningProcess オプションを使用します。

```mathematica
Get-NetTCPConnection -OwningProcess 3164
```
このコマンドを実行すると、プロセス ID が 3164 のプロセスによって所有される TCP コネクション情報が表示されます。

# Get-NetRouteの使用例
Get-NetRoute コマンドレットを使用して、Windows マシンのルーティングテーブルを取得する例です。

```mathematica
Get-NetRoute
```
このコマンドを実行すると、Windows マシンのすべてのルート情報が表示されます。例えば、IPv4 アドレス 192.168.0.0/24 に関する情報は以下のように表示されます。

```mathematica
ifIndex DestinationPrefix                        NextHop              RouteMetric ifMetric PolicyStore
------- -----------------                        -------              ----------- -------- -----------
21      192.168.0.0/24                           192.168.0.1                  256       35 ActiveStore
```
また、特定の IP アドレスに関する情報を取得する場合は、-DestinationPrefix オプションを使用します。

```mathematica
Get-NetRoute -DestinationPrefix 192.168.0.0/24
```
このコマンドを実行すると、IPv4 アドレス 192.168.0.0/24 に関するルート情報が表示されます。

```mathematica
ifIndex DestinationPrefix                        NextHop              RouteMetric ifMetric PolicyStore
------- -----------------                        -------              ----------- -------- -----------
21      192.168.0.0/24                           192.168.0.1                  256       35 ActiveStore
```
さらに、インターフェースのエイリアスを指定して情報を取得する場合は、-InterfaceAlias オプションを使用します。

```mathematica
Get-NetRoute -InterfaceAlias "イーサネット"
```
このコマンドを実行すると、イーサネットに関するルート情報が表示されます。

# Get-NetNeighborの使用例
Get-NetNeighbor コマンドレットを使用して、Windows マシンの近隣情報を取得する例です。

```mathematica
Get-NetNeighbor
```
このコマンドを実行すると、Windows マシンのすべての近隣情報が表示されます。例えば、IPv4 アドレス 192.168.0.1 に関する情報は以下のように表示されます。

```r
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 オプションを使用します。

```mathematica
Get-NetNeighbor -IPAddress 192.168.0.1
```
このコマンドを実行すると、IP アドレス 192.168.0.1 に関する近隣情報が表示されます。

```mathematica
ifIndex IPAddress                              LinkLayerAddress      State       PolicyStore
------- ---------                              ----------------      -----       -----------
6       192.168.0.1                            00-0c-29-22-b5-5b    Permanent  ActiveStore
```
さらに、インターフェースのエイリアスを指定して情報を取得する場合は、-InterfaceAlias オプションを使用します。

```mathematica
Get-NetNeighbor -InterfaceAlias "イーサネット"
このコマンドを実行すると、イーサネットに関する近隣情報が表示されます。
```

# Resolve-DnsNameの使用例
Resolve-DnsName コマンドレットを使用して example.com の A レコードを解決する例です。

```mathematica
Resolve-DnsName example.com
```
このコマンドを実行すると、example.com の A レコードの情報が表示されます。

```css
Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
example.com                                    A      3600  Answer     93.184.216.34
```
また、特定の DNS サーバーを使用して問い合わせる場合は、-Server オプションを使用します。

```mathematica
Resolve-DnsName example.com -Server 8.8.8.8
```
このコマンドを実行すると、Google Public DNS を使用して example.com の A レコードの情報が表示されます。
```css
Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
example.com                                    A      3515  Answer     93.184.216.34
```
さらに、すべての DNS レコードを表示する場合は、-AllRecords オプションを使用します。
```mathematica
Resolve-DnsName example.com -AllRecords
```
このコマンドを実行すると、example.com のすべての DNS レコードの情報が表示されます。