如何在 PowerShell 中獲取 IPv4 地址

  1. 使用 Get-NetIPAddress 將 IPv4 地址放入 PowerShell 中的變量
  2. 使用 Get-NetIPConfiguration 將 IPv4 地址放入 PowerShell 中的變量
  3. 使用 Dns class 將 IPv4 地址放入 PowerShell 中的變量
  4. 使用 Get-WmiObject 將 IPv4 地址放入 PowerShell 中的變量
  5. 使用 Test-Connection 將 IPv4 地址放入 PowerShell 中的變量
  6. 使用 Get-CimInstance 將 IPv4 地址放入 PowerShell 中的變量
  7. 結論
如何在 PowerShell 中獲取 IPv4 地址

系統管理員可以在 PowerShell 中執行各種任務,包括網絡任務。

例如,PowerShell 允許您列出 IP 地址和 IP 配置,對計算機進行 ping 操作,檢索網絡適配器屬性,執行 DHCP 配置任務,並創建/移除網絡共享。

IP 意思是網際網路協議,v4 意思是第四版。

IPv4 地址是識別機器上網絡接口的 32 位整數。它以點分十進制表示。

它有四個由句點分隔的 8 位字段,每個 8 位字段代表 IPv4 地址的一個字節。本教程將教您如何在 PowerShell 中將 IPv4 地址放入變量中。

使用 Get-NetIPAddress 將 IPv4 地址放入 PowerShell 中的變量

Get-NetIPAddress Cmdlet 獲取 IP 地址配置,例如 IPv4 地址、IPv6 地址及與地址相關聯的 IP 接口。

當未提供參數時,它會打印計算機的整個 IP 地址配置。

--AddressFamily 參數用於指定 IP 地址系列的數組。Get-NetIPAddress 獲取與此參數匹配的地址系列的 IP 地址配置。

接受的值為 IPv4IPv6

例如,下面的命令獲取有關計算機上所有 IPv4 地址的 IP 地址配置的信息。

Get-NetIPAddress -AddressFamily IPv4

這個命令僅獲取計算機的 IPv4 地址。

(Get-NetIPAddress | Where-Object { $_.AddressState -eq "Preferred" -and $_.ValidLifetime -lt "24:00:00" }).IPAddress

在提供的代碼片段中,我們利用 Get-NetIPAddress Cmdlet 收集 IP 地址數據,然後使用 Where-Object Cmdlet 根據封閉在大括號內的特定條件過濾結果。Where-Object 區塊內的條件,由 -eq-lt 比較運算符表示,針對處於 Preferred 狀態的 IP 地址及有效壽命小於 24 小時的 IP 地址進行篩選。

通過訪問濾結果的 IPAddress 屬性,括號內封閉,我們隔離並顯示符合既定條件的 IPv4 地址。這次簡潔的分析突出了 PowerShell 中管道的驅動方法,讓每個 Cmdlet 有效地處理數據流以產生精煉的輸出。

輸出:

powershell 獲取 IP 地址 - 輸出 1

您也可以使用以下命令在 PowerShell 中獲取 IPv4 地址。

Get-NetIPAddress -AddressFamily IPv4 -InterfaceIndex $(Get-NetConnectionProfile | Select-Object -ExpandProperty InterfaceIndex) | Select-Object -ExpandProperty IPAddress

在提供的代碼示例中,我們利用 Get-NetIPAddress Cmdlet 獲取 IP 地址信息。通過指定 -AddressFamily IPv4,我們限制結果為 IPv4 地址。

-InterfaceIndex 參數采用使用 Get-NetConnectionProfile 獲取的接口索引,確保獲取與當前網絡連接相關的 IP 地址。最後,使用 Select-Object -ExpandProperty IPAddress 來提取並顯示輸出中的 IP 地址。

輸出:

powershell 獲取 IP 位址 - 輸出 2

使用 Get-NetIPConfiguration 將 IPv4 地址放入 PowerShell 中的變量

Get-NetIPConfiguration Cmdlet 是一個強大的工具,用於檢索 Windows 系統上的 IP 地址信息。這種方法提供有關 IP 配置的全面數據,包括 IPv4 和 IPv6 地址、子網掩碼、默認網關和網絡適配器狀態,幫助管理員和腳本編寫者進行網絡相關任務。

示例:

(Get-NetIPConfiguration | Where-Object { $_.IPv4DefaultGateway -ne $null -and $_.NetAdapter.status -ne "Disconnected" }).IPv4Address.IPAddress

在提供的代碼片段中,我們利用 Get-NetIPConfiguration Cmdlet 收集 IP 地址信息,然後使用 Where-Object Cmdlet 根據封閉在大括號內的特定條件過濾結果。Where-Object 區塊內的條件,由 -ne 比較運算符表示,目標是具有非空 IPv4 默認網關的配置和不處於 Disconnected 狀態的網絡適配器。

通過訪問濾結果的 IPAddress 屬性,括號內封閉,我們隔離並顯示符合既定條件的 IPv4 地址。這次簡潔的分析突出了 PowerShell 管道能高效處理數據流的能力,從而允許精煉的輸出來協助網絡配置和故障排除任務。

輸出:

powershell 獲取 IP 地址 - 輸出 3

使用 Dns class 將 IPv4 地址放入 PowerShell 中的變量

Dns class 是一個靜態類,用於從網際網路域名稱系統 (DNS) 獲取特定主機的信息。GetHostAddresses 方法返回指定主機的 IP 地址。

當在無法直接訪問像 Get-NetIPConfigurationGet-NetIPAddress 的 Cmdlet 的環境中工作時,這種方法特別有用。

示例:

([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 地址並將其顯示為字符串。

輸出:

powershell 獲取 IP 地址 - 輸出 4

使用 Get-WmiObject 將 IPv4 地址放入 PowerShell 中的變量

Get-WmiObject Cmdlet 獲取 Windows 管理工具 (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 地址。

輸出:

powershell 獲取 IP 地址 - 輸出 5

使用 Test-Connection 將 IPv4 地址放入 PowerShell 中的變量

Test-Connection Cmdlet 發送 ICMP 回音請求數據包,或者 ping,給一個或多個計算機並返回回音響應。它還可以確定是否可以跨 IP 網絡聯繫特定計算機。

示例:

(Test-Connection -ComputerName (hostname) -Count 1 | select -ExpandProperty IPv4Address).IPAddressToString

在提供的代碼示例中,我們使用 Test-Connection 對指定的遙遠主機 (hostname) 進行 ping 操作並檢索與網絡相關的信息。-Count 1 參數確保僅向目標計算機發送一次回音請求,從而減少網絡流量。

然後我們使用 Select-Object -ExpandProperty IPv4Address 從輸出中提取並顯示遙遠主機的 IPv4 地址。

如果您有任何虛擬適配器,它會返回虛擬適配器的 IPv4 地址(例如,VPN、Hyper-V、Docker)。

輸出:

powershell 獲取 IP 地址 - 輸出 6

您也可以使用此命令,它返回與上面相同的輸出。

(Test-Connection -ComputerName $env:computername -Count 1).IPv4Address.IPAddressToString

在提供的代碼示例中,我們利用 Test-Connection$env:computername 指定的本地系統進行 ping 操作並檢索與網絡相關的信息。通過指定 -Count 1,我們向本地系統發送一次 ping 請求,以減少網絡流量。

然後,我們訪問輸出對象的 IPv4Address 屬性,並進一步訪問 IPAddressToString 屬性,以檢索 IPv4 地址作為字符串。

輸出:

powershell 獲取 IP 位址 - 輸出 7

使用 Get-CimInstance 將 IPv4 地址放入 PowerShell 中的變量

Get-CimInstance Cmdlet 提供了一種強大的方法來從 Windows 管理工具 (WMI) 倉庫檢索信息,允許管理員輕鬆查詢網絡適配器配置。通過針對 Win32_NetworkAdapterConfiguration CIM 類,這種方法使用戶能夠獲取有關網絡設置的全面詳細信息,包括 IP 地址、子網掩碼、默認網關等。

示例:

(Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration | Where-Object { $_.IPAddress -ne $null }).IPAddress[0]

在提供的代碼示例中,我們利用 Get-CimInstance 查詢 Win32_NetworkAdapterConfiguration CIM 類,檢索有關網絡適配器配置的信息。Where-Object Cmdlet 過濾結果,以選擇 IPAddress 屬性為非空的配置,確保僅返回具有分配的 IP 地址的網絡適配器配置。

通過訪問 [0] 索引,我們從結果集中選擇第一個 IP 地址,這在處理多個網絡適配器或地址時特別有用。這種方法為管理員提供了一種簡潔的方式來檢索與系統相關聯的主要 IP 地址,促進網絡管理和故障排除任務。

輸出:

powershell 獲取 IP 地址 - 輸出 8

結論

在本文中,我們探討了在 PowerShell 中檢索 IPv4 地址的各種方法,利用 PowerShell 生態系統中可用的不同 Cmdlet 和類。從 Get-NetIPAddress 開始,我們學會了如何使用特定的過濾選項來獲取 IP 地址信息,然後是 Get-NetIPConfiguration,它提供有關 Windows 系統 IP 配置的全面數據。

然後我們探索了在無法直接訪問 Cmdlet 的情況下使用 Dns 類的場景。此外,我們檢查了使用 Get-WmiObject 通過 WMI 查詢網絡適配器配置的用法,以及使用 Test-Connection 對遠程主機進行 ping 操作以收集 IP 地址詳細信息。

最後,我們深入了解了利用 Get-CimInstance 高效獲取 WMI 倉庫中網絡適配器配置的方法。每種方法都提供獨特的優勢,適用於網絡管理和故障排除任務中的不同用例和場景。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website