如何仅获取主机名的IPv4地址

时间:2015-07-11 16:07:31

标签: powershell ip

我正在编写一个Powershell脚本,必须自动化Windows机器的初始设置。对于某些操作,我将需要机器IP,但由于我们是一个大型组的一部分(不确定术语),并且在某些时候相同的主机名可能与2相关联。或更多IP我希望得到所有IPv4 IP地址,并根据结果(如果只有1个多个)来编写一些逻辑。

现在我有这个:

$ips = [System.Net.Dns]::GetHostAddresses("myhostname")

但是当我得到$ips.Count之后立即执行2以及执行以下操作时:

[System.Net.Dns]::GetHostAddresses("myhostname") | foreach {echo $_.IPAddressToString }

事实证明我得到了IPv4和(差不多)IPv6地址。

如果我确定这种情况一直都可以,但是由于我想检查多个IPv4地址而我根本不需要IPv6,我怎么能只使用IPv4并查看他们的数量?

1 个答案:

答案 0 :(得分:6)

按地址系列过滤GetHostAddresses()来电的结果。 IPv4地址具有地址系列InterNetwork,而IPv6地址具有地址系列InterNetworkV6

$ips = [Net.Dns]::GetHostAddresses('myhostname') |
       Where-Object { $_.AddressFamily -eq 'InterNetwork' } |
       Select-Object -Expand IPAddressToString

@($ips).Count