使用 GetHostAddresses 时如何获取 ScriptProperty 的值?

使用 GetHostAddresses 时如何获取 ScriptProperty 的值?

我使用以下方法获取 Web 服务的 IP 地址:

$o = [System.Net.Dns]::GetHostAddresses("myservice.domain.com")
$o   correctly returns the object properties.

Address           : **********
AddressFamily     : InterNetwork
ScopeId           : 
IsIPv6Multicast   : False
IsIPv6LinkLocal   : False
IsIPv6SiteLocal   : False
IPAddressToString : 10.0.0.1

但如果我这么做:

$o.IPAddressToString

沒有任何返回。

IPAddressToString 是一个 ScriptProperty。

我需要获取 IP 地址以输入到另一个脚本中。我该怎么做?

答案1

尝试一下:

$o[0].IPAddressToString

或者

$o[0].ToString()

——注意GetHostAddresses最后一个“s”,使它成为复数。你得到一个大批包含主机的 IP。如果您需要迭代整个地址数组,您可以执行以下操作:

foreach ($i in $o) { $i.IPAddressToString }

请参阅此 MSDN 以了解更多详细信息Dns.GetHostAddresses 方法(System.Net)

答案2

我知道这很老了,但这是一个可行的方法

$ipAddy = [System.Net.Dns]::GetHostAddresses("yahoo.com")[0].IPAddressToString;

答案3

展开 ScriptProperty 以访问输出值:

$IpAddress = [System.Net.Dns]::GetHostAddresses("www.example.com") | select IPAddressToString -ExpandProperty IPAddressToString

请注意,如果 GetHostAddresses() 方法返回多个 IPAddress 对象,则 $IPAddress 将包含多个字符串,因此安全的方法是分别枚举并返回所有 IP 地址作为字符串,或者选择第一个:

$IpAddress = ([System.Net.Dns]::GetHostAddresses("www.example.com"))[0]

就像 jscott 的建议一样

相关内容