所以我要更新一些东西。它以前使用过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(我认为)。那我在做什么错了?
答案 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)