2017-12-21 46 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을 사용했지만 두 번째 경우에는 IP가 1 개 이상있는 경우입니다.

감사합니다.

답변

3

CSV 배열 개체를 이해할 수 없으며 일반 텍스트 만 이해하십시오.

당신은 가입 할 수

는 IP의이 같은 단지 Export-CSV cmdlet을하기 전에 쉼표를 사용하여 (또는 다른 문자), (두 개 이상의 경우) :

$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

당신에게 정말 고마워요 !!!! 둘 다 훌륭하게 작동했습니다. 두 번째 옵션이 더 잘 작동했습니다. – IPew