2017-12-21 20 views
3

現在、ドメインのIPアドレスとドメイン自体を示すCSVファイルを取得しようとしています。私は手動でこれを行うだろうが、私は1Kドメインの近くでテストしている。複数のIPでDNSアドレスを解決

これは私の現在のコードです:私が午前問題は、いくつかのドメインが1つの以上のIPアドレスを持っていると私は、CSVファイルを開いたとき、私はより多くのドメイン用にSystem.Object[]を得ることである

$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 

1 IP。ほとんどの場合、私はResolve-DnsName inside Test-Connectionを使ってこのコードを作成しましたが、もう1つのIPがあるときに問題があります。

ありがとうございます!

答えて

3

CSV配列のオブジェクトを理解できません。プレーンテキストのみです。

あなたが参加することができます

IPのこのような単なるExport-CSVコマンドレットの前にコンマを使用して(またはその他の文字)、(もっとして1場合):

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

別のオプションは、各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 
+0

はありがとうございました!!!!どちらも素晴らしい、私のためには、2番目のオプションがうまくいった! – IPew

関連する問題