PowerShell で IPv4 アドレスを取得する方法
-
Get-NetIPAddressを使用して PowerShell で IPv4 アドレスを変数に取得する -
Get-NetIPConfigurationを使用して PowerShell で IPv4 アドレスを変数に取得する -
Dns クラスを使用して PowerShell で IPv4 アドレスを変数に取得する -
Get-WmiObjectを使用して PowerShell で IPv4 アドレスを変数に取得する -
Test-Connectionを使用して PowerShell で IPv4 アドレスを変数に取得する -
Get-CimInstanceを使用して PowerShell で IPv4 アドレスを変数に取得する - 結論
システム管理者は、PowerShell でさまざまなタスクを実行することができ、ネットワーキングタスクも含まれます。
例えば、PowerShell を使用すると、IP アドレスと IP 設定を一覧表示したり、コンピュータに ping を送ったり、ネットワークアダプタのプロパティを取得したり、DHCP 設定タスクを実行したり、ネットワーク共有を作成/削除したりすることができます。
IP とはインターネットプロトコルを意味し、v4 はバージョン 4 を意味します。
IPv4 アドレスは、マシン上のネットワークインターフェイスを識別する 32 ビットの整数です。ドット十進法表記で表されます。
それは、ピリオドで区切られた 4つの 8 ビットフィールドを持ち、各 8 ビットフィールドは IPv4 アドレスの 1 バイトを表します。このチュートリアルでは、PowerShell で IPv4 アドレスを変数に格納する方法を学びます。
Get-NetIPAddress を使用して PowerShell で IPv4 アドレスを変数に取得する
Get-NetIPAddress コマンドレットは、IPv4 アドレス、IPv6 アドレス、アドレスに関連する IP インターフェイスなど、IP アドレス設定を取得します。
パラメータなしで実行すると、コンピュータの全 IP アドレス設定が表示されます。
--AddressFamily パラメータは、IP アドレスファミリーの配列を指定するために使用されます。Get-NetIPAddress は、このパラメータを使用してアドレスファミリーに一致する IP アドレス設定を取得します。
受け入れられる値は IPv4 と IPv6 です。
例えば、以下のコマンドは、コンピュータ上のすべての IPv4 アドレスに関する情報を取得します。
Get-NetIPAddress -AddressFamily IPv4
このコマンドは、コンピュータの IPv4 アドレスのみを取得します。
(Get-NetIPAddress | Where-Object { $_.AddressState -eq "Preferred" -and $_.ValidLifetime -lt "24:00:00" }).IPAddress
提供されたコードスニペットでは、Get-NetIPAddress コマンドレットを利用して IP アドレスデータを収集し、その後 Where-Object コマンドレットを使用して特定の条件に基づいて結果をフィルタリングしています。Where-Object ブロック内の条件は、-eq および -lt 比較演算子によって示され、Preferred 状態の IP アドレスと、24 時間未満の有効期間を持つ IP アドレスを対象としています。
フィルタリングされた結果の IPAddress プロパティにアクセスすることで、設定された条件を満たす IPv4 アドレスを特定し表示します。この簡潔な分析は、PowerShell におけるパイプライン駆動型アプローチを強調しており、各コマンドレットがデータストリームを効率的に処理して洗練された出力を生成します。
出力:

PowerShell で IPv4 アドレスを取得するために、以下のコマンドを使用することもできます。
Get-NetIPAddress -AddressFamily IPv4 -InterfaceIndex $(Get-NetConnectionProfile | Select-Object -ExpandProperty InterfaceIndex) | Select-Object -ExpandProperty IPAddress
提供されたコード例では、Get-NetIPAddress コマンドレットを使用して IP アドレス情報を取得します。-AddressFamily IPv4 を指定することで、結果を IPv4 アドレスに制限します。
-InterfaceIndex パラメータには、Get-NetConnectionProfile を使用して取得したインターフェイスインデックスが入力され、現在のネットワーク接続に関連する IP アドレスが取得されます。最後に、Select-Object -ExpandProperty IPAddress を使用して出力から IP アドレスを抽出し、表示します。
出力:

Get-NetIPConfiguration を使用して PowerShell で IPv4 アドレスを変数に取得する
Get-NetIPConfiguration コマンドレットは、Windows システム上の IP アドレス情報を取得するための強力なツールです。このメソッドは、IP 設定に関する包括的なデータを提供し、IPv4 および IPv6 アドレス、サブネットマスク、デフォルトゲートウェイ、ネットワークアダプタのステータスなどが含まれ、管理者やスクリプターのネットワーク関連タスクを支援します。
例:
(Get-NetIPConfiguration | Where-Object { $_.IPv4DefaultGateway -ne $null -and $_.NetAdapter.status -ne "Disconnected" }).IPv4Address.IPAddress
提供されたコードスニペットでは、Get-NetIPConfiguration コマンドレットを利用して IP アドレス情報を収集し、その後 Where-Object コマンドレットを使用して特定の条件に基づいて結果をフィルタリングしています。Where-Object ブロック内の条件は、-ne 比較演算子によって示され、非 null の IPv4 デフォルトゲートウェイを持つ設定と、Disconnected ステータスではないネットワークアダプタを対象としています。
フィルタリングされた結果の IPAddress プロパティにアクセスすることで、設定された条件を満たす IPv4 アドレスを特定し表示します。この簡潔な分析は、PowerShell パイプラインの能力を強調しており、効率的にデータストリームを処理し、ネットワーク設定やトラブルシューティングタスクを支援するための洗練された出力を可能にします。
出力:

Dns クラスを使用して PowerShell で IPv4 アドレスを変数に取得する
Dns クラスは、インターネットドメインネームシステム(DNS)から特定のホストに関する情報を取得する静的クラスです。GetHostAddresses メソッドは、指定されたホストに対する IP アドレスを返します。
このアプローチは、Get-NetIPConfiguration や Get-NetIPAddress のようなコマンドレットに直接アクセスできない、または適していない環境で特に便利です。
例:
([System.Net.DNS]::GetHostAddresses($env:computername) | Where-Object { $_.AddressFamily -eq "InterNetwork" } | Select-Object IPAddressToString)[0].IPAddressToString
提供されたコード例では、[System.Net.DNS]::GetHostAddresses を使用して、$env:computername で指定されたローカルコンピュータに関連する IP アドレスを取得します。次に、Where-Object を使用して、IPv4 アドレスのみを選択するために結果をフィルタリングします(AddressFamily -eq "InterNetwork")。
次に、Select-Object IPAddressToString を使用して IP アドレスを文字列表現として抽出します。最後に、[0].IPAddressToString が結果から最初の IP アドレスを選択し、文字列として表示します。
出力:

Get-WmiObject を使用して PowerShell で IPv4 アドレスを変数に取得する
Get-WmiObject コマンドレットは、Windows Management Instrumentation(WMI)クラスのインスタンスや、利用可能な WMI クラスに関する情報を取得します。
Win32_NetworkAdapterConfiguration は、ネットワークアダプタの属性と動作を表す WMI クラスです。
例:
(Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object { $_.DHCPEnabled -ne $null -and $_.DefaultIPGateway -ne $null }).IPAddress | Select-Object -First 1
提供されたコードスニペットでは、Get-WmiObject を使用して Win32_NetworkAdapterConfiguration クラスをクエリし、ネットワークアダプタの設定詳細を取得します。その後、Where-Object フィルターを適用して、DHCP が有効でデフォルトゲートウェイが指定されている設定を選択します。
これにより、アクティブなネットワーク接続に関連付けられた IP アドレスが取得されます。最後に、Select-Object -First 1 を使用して結果から最初の IP アドレスを選択します。
出力:

Test-Connection を使用して PowerShell で IPv4 アドレスを変数に取得する
Test-Connection コマンドレットは、1 台以上のコンピュータに ICMP エコーリクエストパケット、または ping を送信し、エコー応答の応答を返します。また、特定のコンピュータが IP ネットワークを介して連絡できるかどうかを判断することもできます。
例:
(Test-Connection -ComputerName (hostname) -Count 1 | select -ExpandProperty IPv4Address).IPAddressToString
提供されたコード例では、Test-Connection を使用して、(hostname) で指定されたリモートホストに ping を送り、ネットワーク関連の情報を取得します。-Count 1 パラメータにより、ターゲットコンピュータに対して単一のエコーリクエストのみが送信され、ネットワークトラフィックが最小限に抑えられます。
次に、Select-Object -ExpandProperty IPv4Address を使用して、出力からリモートホストの IPv4 アドレスを抽出し、表示します。
仮想アダプタがある場合、仮想アダプタ(例:VPN、Hyper-V、Docker)の IPv4 アドレスが返されます。
出力:

このコマンドも使用でき、上記と同じ出力を返します。
(Test-Connection -ComputerName $env:computername -Count 1).IPv4Address.IPAddressToString
提供されたコード例では、Test-Connection を使用して、$env:computername で指定されたローカルシステムに ping を送り、ネットワーク関連の情報を取得します。-Count 1 を指定することで、ローカルシステムに単一の ping リクエストを送信し、ネットワークトラフィックを最小限に抑えます。
その後、出力オブジェクトの IPv4Address プロパティにアクセスし、さらに IPAddressToString プロパティにアクセスして IPv4 アドレスを文字列として取得します。
出力:

Get-CimInstance を使用して PowerShell で IPv4 アドレスを変数に取得する
Get-CimInstance コマンドレットは、Windows Management Instrumentation(WMI)リポジトリから情報を取得するための堅牢なアプローチを提供し、管理者がネットワークアダプタ構成を簡単にクエリできるようにします。Win32_NetworkAdapterConfiguration CIM クラスを対象にすることで、このメソッドはユーザーが IP アドレス、サブネットマスク、デフォルトゲートウェイなどのネットワーク設定に関する包括的な詳細を取得できるようにします。
例:
(Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration | Where-Object { $_.IPAddress -ne $null }).IPAddress[0]
提供されたコード例では、Get-CimInstance を使用して Win32_NetworkAdapterConfiguration CIM クラスをクエリし、ネットワークアダプタ構成に関する情報を取得します。Where-Object コマンドレットは、IPAddress プロパティが null でない設定を選択するように結果をフィルタリングします。これにより、割り当てられた IP アドレスを持つネットワークアダプタ構成のみが返されます。
[0] インデックスにアクセスすることで、結果セットから最初の IP アドレスを選択し、複数のネットワークアダプタやアドレスを扱う際に有用です。このアプローチは、システムに関連付けられたプライマリ IP アドレスを取得するための簡潔な方法を管理者に提供し、ネットワーク管理およびトラブルシューティングタスクを促進します。
出力:

結論
この記事では、さまざまな方法で PowerShell で IPv4 アドレスを取得する方法を探求し、PowerShell エコシステム内で利用可能なさまざまなコマンドレットやクラスを活用しました。Get-NetIPAddress から始めて、特定のフィルタリングオプションを使用して IP アドレス情報を取得する方法を学び、その後 Get-NetIPConfiguration を使用して Windows システム上の IP 設定に関する包括的なデータを提供しました。
次に、コマンドレットに直接アクセスできない場合のシナリオに対処するために Dns クラスを使用することを探求しました。さらに、WMI を使用してネットワークアダプタ構成をクエリするために Get-WmiObject の使用を検討し、リモートホストに ping を送り IP アドレスの詳細を集めるために Test-Connection を調べました。
最後に、WMI リポジトリからネットワークアダプタ構成を効率的に取得するために Get-CimInstance を利用しました。各メソッドはユニークな利点を提供し、ネットワーク管理やトラブルシューティングタスクにおいてさまざまな用途やシナリオに対応します。
