如何在 PowerShell 中获取 IPv4 地址
-
使用
Get-NetIPAddress
在 PowerShell 中将 IPv4 地址放入变量 -
使用
Get-NetIPConfiguration
在 PowerShell 中将 IPv4 地址放入变量 -
使用
Dns class
在 PowerShell 中将 IPv4 地址放入变量 -
使用
Get-WmiObject
在 PowerShell 中将 IPv4 地址放入变量 -
使用
Test-Connection
在 PowerShell 中将 IPv4 地址放入变量 -
使用
Get-CimInstance
在 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 地址配置。
接受的值为 IPv4
和 IPv6
。
例如,下面的命令获取计算机上所有 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 中获取 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 地址。
输出:
使用 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 管道高效处理数据流的能力,从而产生有助于网络配置和故障排除任务的精炼输出。
输出:
使用 Dns class
在 PowerShell 中将 IPv4 地址放入变量
Dns class
是一个静态类,用于从互联网域名系统 (DNS) 获取特定主机的信息。GetHostAddresses
方法返回指定主机的 IP 地址。
这种方法在直接访问像 Get-NetIPConfiguration
或 Get-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 地址并将其显示为字符串。
输出:
使用 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 地址。
输出:
使用 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)。
输出:
您还可以使用此命令,返回与上述相同的输出。
(Test-Connection -ComputerName $env:computername -Count 1).IPv4Address.IPAddressToString
在提供的代码示例中,我们利用 Test-Connection
ping 本地系统(由 $env:computername
指定)并检索网络相关的信息。通过指定 -Count 1
,我们向本地系统发送一个 ping 请求,从而减少网络流量。
然后,我们访问输出对象的 IPv4Address
属性,并进一步访问 IPAddressToString
属性,以字符串形式检索 IPv4 地址。
输出:
使用 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 中检索 IPv4 地址的各种方法,利用 PowerShell 生态系统中可用的不同 cmdlet 和类。从 Get-NetIPAddress
开始,我们学习了如何使用特定的过滤选项获取 IP 地址信息,随后是 Get-NetIPConfiguration
,它提供有关 Windows 系统中 IP 配置的全面数据。
然后,我们探索了使用 Dns
类在直接访问 cmdlet 不可用的情况下的场景。此外,我们还检查了使用 Get-WmiObject
通过 WMI 查询网络适配器配置以及使用 Test-Connection
ping 远程主机并收集 IP 地址详细信息的用法。
最后,我们深入利用 Get-CimInstance
有效地从 WMI 库中检索网络适配器配置。每种方法都提供了独特的优势,满足网络管理和故障排除任务中的不同用例和场景。