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

Ler*_*ica 0 ip powershell

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

现在我有这个:

$ips = [System.Net.Dns]::GetHostAddresses("myhostname")
Run Code Online (Sandbox Code Playgroud)

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

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

事实证明,我得到了IPv4和(几乎)IPv6地址.

如果我确定这种情况总是如此,那就好了,但是因为我想检查多个IPv4地址而我根本不需要IPv6,我怎样才能只使用IPv4并查看它们的数量?

Ans*_*ers 6

GetHostAddresses()按地址系列过滤呼叫结果.IPv4地址具有地址族,InterNetwork而IPv6地址具有地址族InterNetworkV6.

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

@($ips).Count
Run Code Online (Sandbox Code Playgroud)