我使用以下方法获取 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 的建议一样