【问题标题】:Powershell returning more than what is in DNSPowershell 返回的内容多于 DNS 中的内容
【发布时间】:2014-04-30 16:46:53
【问题描述】:

我正在尝试将注册表项与多宿主服务器上的 DNS 中的内容进行匹配。问题是 system.net.dns 返回的似乎比 DNS 中的更多。

例子:

nslookup hostname.dns.net
Server DNS.server.naem
Address: IP.Address.of.server

Name: hostname.dns.net
Address: single.ip.of.server

但是当我使用时:

$DNSResult = [System.Net.Dns]::GetHostEntry($Computer)
$DNSresult.addresslist

输出2个服务器IP地址,已发布的和未发布的....

我该怎么做才能得到 DNS 发布的结果。

【问题讨论】:

  • 谢谢如果没有办法修复系统调用我可能不得不走这条路但我希望不会。
  • 绑定您附加的方法但遇到问题:$computername=$env:COMPUTERNAME function dnsLookup($hostname){ $r = (nslookup $hostname | Out-String).split("@ 987654324@t","") } } [Net.IPAddress]$dnsip=dnsLookup $computername $dnsip 我收到错误:无法将值“10.0.0.1”转换为类型“System.Net.IPAddress”。错误:“指定的 IP 地址无效。”

标签: powershell


【解决方案1】:

回复Net.IPAddress]$dnsip=dnsLookup $computername $dnsip 错误。我添加了换行符清理,它隐藏在输出的末尾并阻止正确解析。 nslookup 的输出被分解为字符串数组。使用$i = 4,您开始处理第5 行的输出,即第一个返回地址所在的位置。 $r.count - 2 停止处理最后一行,一个空字符串。

function dnsLookup($hostname){
    $r = (nslookup $hostname | Out-String).split("`n")
    for($i = 4; $i -lt ($r.count - 2); $i++){
        $r[$i] -replace ("Address:  |Addresses:  | |`t|`r|Server"),""
    }
}

现在Net.IPAddress]$dnsip=dnsLookup $computername 可以工作了。

【讨论】:

  • 非常感谢!你能解释一下这是如何工作的吗?我了解从 NSLookup 的结果中删除所有信息和空格,但这是在做什么: ($i = 4; $i -lt ($r.count - 2); $i++)
猜你喜欢
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多