Powershell:显示来自 Resolve-DnsName 的错误

Powershell: Display Errors from Resolve-DnsName

早上好,

所以我得到了一堆 IP 并想获得 DNS 名称, 所以我尝试了这个。

Select-String -Allmatches -pattern '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' |% { $_.Matches }| % { $_.Value }| select -Unique| %{Resolve-Dnsname -name $_}

这有效,但是当我将它输出到文件时,我只得到他可以找到主机名的结果。

有没有办法也显示错误。

我可能会这样做:

Select-String -AllMatches -Pattern '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' |
    Select-Object -ExpandProperty Matches |
    Select-Object -ExpandProperty Value -Unique |
    ForEach-Object {
        $Resolve = $null
        $Resolve = Resolve-DnsName -Name $_ -ErrorAction SilentlyContinue

        [PSCustomObject]@{
            IP = $_
            Name = $Resolve.Name
            Type = $Resolve.Type
            TTL = $Resolve.TTL
            Section = $Resolve.Section
            NameHost = $Resolve.NameHost
        }
    }

您可以在自定义对象中指定您想要的任何字段。我只是包含了 Resolve-DnsName 输出到屏幕的默认属性。

一般来说,Select-Object -ExpandProperty <property>ForEach-Object { $_.<property> } 表现更好。

我相当确定我上面的代码会起作用,但有一个外部机会:

    Select-Object -ExpandProperty Value -Unique |

可能需要这样:

    Select-Object -ExpandProperty Value |
    Select-Object -Unique |