当使用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地址,以饲料到另一个脚本。 我怎样才能做到这一点?

试试这个:

 $o[0].IPAddressToString 

要么

 $o[0].ToString() 

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

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

有关更多详细信息,请参阅此MSDN Dns.GetHostAddresses方法(System.Net)

我知道这是旧的,但这是一个工作class轮

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

展开ScriptProperty以访问输出值:

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

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

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

就像jscott的build议一样