使用多个IP解析DNS地址

3
我是一名有用的助手,为您翻译以下it技术相关内容。需要翻译的内容涉及获取一个CSV文件,其中显示域名和其IP地址。由于要测试近1000个域名,我不想手动操作。
以下是当前的代码:
$Domains = Get-Content "X:\User\URLs.txt"
$collection = $()

foreach($Domain in $Domains)
   {
    Write-Host "Testing $Domain"
    $status = @{ "Domain" = $Domain}
    $result = [system.net.dns]::GetHostAddresses($Domain)

    if($result)
    {
        $status.Results = "UP"
        $status.IP = [system.net.dns]::GetHostAddresses($Domain).IPAddressToString
        Write-Host "GOOD"        
    }#END If

    else
    {
        $status.Results = "Down"
        $status.IP = "N/A"
        $status.DNS = if (-not(Resolve-DnsName -Name $Domain -ErrorAction SilentlyContinue))
        {
         Write-Output -Verbose "$Domain -- Not Resolving"
        }#END inner if

        else
        {
        "$Domain resolving"
        }#END inner else

    }#END else

    New-Object -TypeName PSObject -Property $status -OutVariable domainStatus
    $collection += $domainStatus

}#END forEach
$collection | Export-Csv -LiteralPath "X:\User\DomainList.csv" -Append -Force

我遇到的问题是,有些域名有多个IP地址,当我打开CSV文件时,对于具有多个IP的域名,我会得到一个。在大部分情况下,我使用了在Test-Connection中解析DNS名称的Resolve-DnsName来创建这段代码,但问题在于存在多个IP时。谢谢!
1个回答

3

CSV不理解数组的对象,只能处理纯文本。

如果有多个IP地址,可以在Export-CSV命令之前使用逗号(或任何其他字符)将它们连接起来,例如:

$Collection | Select Domain,@{N="IP";E={$_.IP -join ','} },Results |
Export-Csv -LiteralPath "X:\User\DomainList.csv" -Append -Force

另一个选择是为每个 IP 添加另一行,但您需要稍微修改代码:

另一个选项是为每个IP添加另一行,但您需要稍微修改代码:

$Domains = 'google.com','microsoft.com' 
$Collection = @()

foreach ($Domain in $Domains)
{
    Write-Host "Testing $Domain"

    Try {

        foreach ($IP in [system.net.dns]::GetHostAddresses($Domain).IPAddressToString)
        {
        $Row = "" | Select Domain,IP,Status
        $Row.Domain = $Domain
        $Row.IP = $IP
        $Row.Status = "UP"
        $Collection += $Row
        }
    }

    Catch 
    {
        $Row = "" | Select Domain,IP,Status
        $Row.Domain = $Domain
        $Row.Status = "DOWN"
        $Collection += $Row
    }
}

$Collection | Export-Csv -LiteralPath "X:\User\DomainList.csv" -Append -Force

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接