调用IP地址的“解析”异常-为什么?

时间:2019-07-04 20:34:09

标签: powershell

所以我要更新一些东西。它以前使用过whoami.akamai.net,但是现在已被whoami.ds.akahelp.net(和/或协议特定的whoami.ipv4.akahelp.net和whoami.ipv6.akahelp.net)取代。所以需要更新。无论如何,我

$ips = (((Resolve-DnsName 'whoami.ds.akahelp.net' -QuickTimeout -Type txt).Strings) -replace 'ns','').Trim();
$ips = [System.Net.IPAddress]::Parse($ips)

它生成一个错误-异常调用带有“ 1”参数的“解析”:“指定了无效的IP地址。” -但IP有效。然后我注意到在IP之前似乎还有一条额外的线路,这样可以解释异常情况,但我无法摆脱这一线路。我希望输出只是IP地址。无论如何,我无法解析IP,并且IP之前的多余行使输出在输入其他代码的地方变得无用,因为在其他代码中,即使它真正看到了多余的行,它也被检测为无效IP(我认为)。那我在做什么错了?

2 个答案:

答案 0 :(得分:2)

返回的对象是一个数组,您需要指定数组中需要的项目。

PS C:\Users\jacob> $ips

81.134.99.118

PS C:\Users\jacob> $ips.GetType()

IsPublic IsSerial Name                                     BaseType                                                                                                           
-------- -------- ----                                     --------                                                                                                           
True     True     Object[]                                 System.Array                                                                                                       



PS C:\Users\jacob> $ips[1]
81.134.99.118

PS C:\Users\jacob> $ips[1].GetType()

IsPublic IsSerial Name                                     BaseType                                                                                                           
-------- -------- ----                                     --------                                                                                                           
True     True     String                                   System.Object                                                                                                      

因此,使用您拥有的代码,可以在所需的数组中指定所需的项目,您可以将其编写如下:

$ips = (Resolve-DnsName 'whoami.ds.akahelp.net' -QuickTimeout -Type txt).Strings[1].Trim()
$ips = [System.Net.IPAddress]::Parse($ips)

答案 1 :(得分:0)

我认为应该这样做
$ips = (Resolve-DnsName 'whoami.ds.akahelp.net' -QuickTimeout -Type txt).Strings[1] $ips = [System.Net.IPAddress]::Parse($ips)