如何在 PowerShell 中获取 IPv4 地址

  1. 使用 Get-NetIPAddress 在 PowerShell 中将 IPv4 地址放入变量
  2. 使用 Get-NetIPConfiguration 在 PowerShell 中将 IPv4 地址放入变量
  3. 使用 Dns class 在 PowerShell 中将 IPv4 地址放入变量
  4. 使用 Get-WmiObject 在 PowerShell 中将 IPv4 地址放入变量
  5. 使用 Test-Connection 在 PowerShell 中将 IPv4 地址放入变量
  6. 使用 Get-CimInstance 在 PowerShell 中将 IPv4 地址放入变量
  7. 结论
如何在 PowerShell 中获取 IPv4 地址

系统管理员可以在 PowerShell 中执行各种任务,包括网络任务。

例如,PowerShell 允许您列出 IP 地址和 IP 配置,ping 一台计算机,检索网络适配器属性,执行 DHCP 配置任务,以及创建/删除网络共享。

IP 代表互联网协议,v4 代表版本四。

IPv4 地址是 32 位整数,用于标识计算机上的网络接口。它以点分十进制表示。

它有四个以句点分隔的 8 位字段,每个 8 位字段代表 IPv4 地址的一个字节。此教程将教您如何在 PowerShell 中将 IPv4 地址放入变量。

使用 Get-NetIPAddress 在 PowerShell 中将 IPv4 地址放入变量

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 在 PowerShell 中将 IPv4 地址放入变量

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 管道高效处理数据流的能力,从而产生有助于网络配置和故障排除任务的精炼输出。

输出:

获取 IP 地址 - 输出 3

使用 Dns class 在 PowerShell 中将 IPv4 地址放入变量

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 地址并将其显示为字符串。

输出:

获取 IP 地址 - 输出 4

使用 Get-WmiObject 在 PowerShell 中将 IPv4 地址放入变量

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 在 PowerShell 中将 IPv4 地址放入变量

Test-Connection cmdlet 发送 ICMP 回声请求数据包,或 ping,一台或多台计算机并返回回声响应回复。它还可以确定是否可以通过 IP 网络联系特定计算机。

示例:

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

在提供的代码示例中,我们使用 Test-Connection ping 某个远程主机(由 (hostname) 指定)并检索与网络相关的信息。-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 ping 本地系统(由 $env:computername 指定)并检索网络相关的信息。通过指定 -Count 1,我们向本地系统发送一个 ping 请求,从而减少网络流量。

然后,我们访问输出对象的 IPv4Address 属性,并进一步访问 IPAddressToString 属性,以字符串形式检索 IPv4 地址。

输出:

powershell 获取 IP 地址 - 输出 7

使用 Get-CimInstance 在 PowerShell 中将 IPv4 地址放入变量

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 属性不为 null 的配置,确保仅返回具有分配 IP 地址的网络适配器配置。

通过访问 [0] 索引,我们从结果集中选择第一个 IP 地址,这在处理多个网络适配器或地址时很有用。此方法为管理员提供了一种简洁的方式来检索与系统关联的主要 IP 地址,方便网络管理和故障排除任务。

输出:

powershell 获取 IP 地址 - 输出 8

结论

在本文中,我们探讨了在 PowerShell 中检索 IPv4 地址的各种方法,利用 PowerShell 生态系统中可用的不同 cmdlet 和类。从 Get-NetIPAddress 开始,我们学习了如何使用特定的过滤选项获取 IP 地址信息,随后是 Get-NetIPConfiguration,它提供有关 Windows 系统中 IP 配置的全面数据。

然后,我们探索了使用 Dns 类在直接访问 cmdlet 不可用的情况下的场景。此外,我们还检查了使用 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