ネットワーク関連の調査に役立つPowerShellコマンドレット

ネットワーク関連の調査に役立つPowerShellコマンドレット

自宅や会社などで、ネットワーク関連の問題に遭遇した場合、トラブルシューティングとしてまず行うのは、疎通・経路・設定などの確認です。

Windows環境だと、これらの確認にWindowsコマンドを使った方法が一般的ですが、PowerShellコマンドレットにも、ネットワークのトラブルシューティングに役立つコマンドレットがいくつか用意されています。

そこでここでは、ネットワークの状況チェックをする際に役立つPowerShellコマンドレットを紹介します。

通信状況の確認

疎通の確認

PS> Test-Connection "ホスト名またはIPアドレス"

Test-Connectionコマンドレットは、PINGコマンドに相当するコマンドで、宛先を指定して実行すると、宛先への疎通確認ができます。

また、Test-Connectionコマンドレットは、リモートマシンから実行させることもできます。

たとえば、リモートマシン「PC-002」に「user01」で接続して、リモートマシンを発信元として、宛先「yahoo.co.jp」に疎通を確認する場合は、次のようにコマンドを実行します。

PS> Test-Connection -ComputerName yahoo.co.jp -Source pc-002 -Credential user01

コマンドの実行結果は、以下の画像のようになります。

ネットワーク関連の調査に役立つPowerShellコマンドレット

なお、Test-Connectionコマンドレットをリモートマシンから実行するには、事前の設定が必要になるので、詳しくは以下の記事の「事前設定」欄をご覧ください。

リモートのWindowsをコマンドで(一括)再起動、シャットダウンする方法
リモートのWindowsをコマンドで(一括)再起動、シャットダウンする方法
PowerShellコマンドレット「Restart-Computer」「Stop-Computer」を使って、リモートのWindowsを再起動/シャットダウンする方法を紹介します。

経路の確認

PS> Test-NetConnection "ホスト名またはIPアドレス" -traceroute 

Test-NetConnectionコマンドレットに「-traceroute」オプションを付けて実行すると、tracerootコマンドと同じように、宛先までの経路を確認することができ、問題がある場合には、経路上のどこに問題があるかを確認することができます。

ポートへの接続確認

PS> Test-NetConnection "ホスト名またはIPアドレス" -Port #

Test-NetConnectionコマンドレットに「-port」オプションとポート番号を指定して実行すると、宛先ホストの指定したポート番号への接続を確認することができます。

なお、Windows環境でリモートのサービスへの接続を確認する方法は、別記事で詳しく解説しています。

TCP接続の状況確認

PS> Get-NetTCPConnection

Get-NetTCPConnectionコマンドレットは、netstatコマンドに相当するコマンドで、現在のTCP接続の状況を確認できます。たとえば、接続が確立済み、待ち受け中などの状況を確認することができます。

名前解決の確認

PS> Resolve-DnsName -Name "ホスト名"

Resolve-DnsNameコマンドレットは、nslookupに相当するコマンドで、指定したホスト名の名前解決の状況を確認することができます。

また「-server」スイッチでDNSサーバーを指定して実行すれば、指定したDNSサーバーでの名前解決の状況を確認することもできます。

ネットワークアダプターの状況確認

ネットワーク設定の確認

PS> Get-NetIPConfiguration

Get-NetIPConfigurationコマンドレットは、ipconfigに相当するコマンドで、ネットワークアダプタごとの設定情報を一覧表示できます。表示される情報には、IPアドレス・DNSサーバーアドレス、ゲートウェイアドレスなどがあります。

DNSキャッシュのクリア

PS> Clear-DnsClientCache

Clear-DnsClientCacheコマンドレットでは、ローカルに保存されている名前解決の記録を削除します。名前解決に問題が生じている場合に有効なコマンドレットです。

IPアドレスのリリースと更新

PowerShellでは、DHCPにより配布されたIPアドレスのリリースや更新ができるコマンドレットがないので、これらを行う時は、Invoke-Commandコマンドレットから、ipconfigコマンドを呼び出してIPアドレスのリリースや更新を行います。

リリースする場合

PS> Invoke-Command -ScriptBlock {ipconfig /release}

更新する場合

PS> Invoke-Command -ScriptBlock {ipconfig /renew}

あとがき

以前までは、Windowsでネットワーク関連の調査を行う際は、Windowsコマンドを使うことが多かったですが、PowerShellでも大抵のことは対応できそうです。