gpt4 book ai didi

powershell - Resolve-DnsName - 格式化和错误捕获

转载 作者:行者123 更新时间:2023-12-02 20:26:27 24 4
gpt4 key购买 nike

我有一个域列表,我需要其中每个域的名称服务器列表以及名称服务器的 IP 地址。

格式化/更好的方法?

Resolve-DnsName google.com -Type NS -DnsOnly | Select Name, NameHost, IP4Address

Name NameHost IP4Address
---- -------- ----------
google.com ns1.google.com
google.com ns4.google.com
ns4.google.com 216.239.38.10
ns1.google.com 216.239.32.10

我把结果缩小了一点。我希望 IP 地址与其余数据显示在同一行。快速谷歌向我展示了如何向现有对象添加哈希。

$dl = gc C:\domains.txt
$result = $dl |
Resolve-DnsName -Type NS -DnsOnly |
Where { $_.IP4Address -like '' } |
Select Name, NameHost, @{l="IPAddress";e={Resolve-DnsName google.com -Type A | Select -ExpandProperty IPAddress}}

对于上述内容,这是“正确/最好的方法”还是您会推荐其他方法。

其次,一些结果失败并出现大量红色,我想要捕获的重要信息是“DNS 名称不存在”、“DNS 服务器故障”,还有其他一些信息。我如何捕获相关错误,我假设我可以将其添加到新的哈希“列”中。我想不出在代码中使用 try、catch block 的方法?

最佳答案

将结果捕获到变量中,这样您就不必多次执行查询。变量中的数据可用于按照您想要的方式进行切片和切 block 。

如果您有大量主机名需要查询,只需将下面的整个 block 放入 foreach 循环中即可。

$name = 'google.com'

try{
$dns = Resolve-DnsName -Name $name -Type NS -DnsOnly -ErrorAction Stop

$IPhash = @{}

$dns |
Where-Object Section -eq Additional |
ForEach-Object {
$IPhash.Add($_.name, $_.IP4Address)
}

$dns |
Where-Object Section -eq Answer |
Sort-Object NameHost |
Select-Object Name, NameHost,
@{N='IP'; E={$IPhash[$_.NameHost]}},
@{N='Status'; E={'Resolved'}}
} Catch{
[pscustomobject]@{
Name = $name
NameHost = ''
IP = ''
Status = $Error[0].Exception.Message
}
}

关于powershell - Resolve-DnsName - 格式化和错误捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31257346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com