2017-09-14 96 views
1

我是PowerShell腳本的新手。我正在嘗試製作一個腳本,將DNS名稱列表解析爲其IP,並將它們輸出爲CSV文件。當服務器無法解析時,應將其輸出到單獨的文件。自定義Foreach循環nslookup導出到csv

這裏是我的代碼:

$location 
$location = Read-Host "CSV Path: " 
$Names = Import-Csv -Path $location 

foreach($n in $Names) 
{ 
    try 
    { 
     $output = $n.NAME 
     $variable1 = [system.net.dns]::resolve($output) | Select 
     HostName,AddressList 
     $variable1 
     $IP = $variable1.AddressList | Select-Object IPAddressToString 
     $IPN = $IP.IPAddressToString 
     $csv+=New-Object psobject -Property @{IPAddresse= $IPN;Name= 
     $output} | 
     Export-Csv \\filepath\Working.csv -NoTypeInformation 
    } 

    catch 
    { 
     Write-host "$output is unreachable." 
     Write-Output "$output" | Export-Csv \\Filepath\Unreachable.csv - 
     Append -Encoding ASCII 
    } 

} 

編輯:該代碼是合作得非常好,但現在它說,有一個與進口分隔符的錯誤,但我不知道爲什麼會這樣突然出現作爲代碼工作didnt有任何編輯,突然不工作了

+0

^h歡迎來到StackOverflow。如果您解釋了現有解決方案無法運行的方式,它可能會對我們有所幫助。當您遇到可以複製的特定問題時,SO工作效果最佳。 –

+0

在快速掃描中,我可以看到您正在使用名爲'$ ausgabe'的變量,該變量永遠不會被填充任何值。你也使用$ csv作爲一個數組,但沒有將其定義爲一個數組(也填充這個變量似乎是多餘的)。 –

+0

@MarkWragg這是一個錯誤的翻譯,以獲得它的社區 – Kevin

回答

0

這是你的代碼的簡化/修正版本:

$location = Read-Host "CSV Path: " 
$Names = Import-Csv -Path $location 

foreach($n in $Names) 
{ 
    try { 
     $Computer = [system.net.dns]::resolve($n.NAME) | Select HostName,AddressList 
     $IP = ($Computer.AddressList).IPAddressToString 
     New-Object PSObject -Property @{IPAddress=$IP; Name=$Computer.HostName} | Export-Csv \\filepath\Working.csv -NoTypeInformation -Append 
    } catch { 
     Write-Host "$($n.NAME) is unreachable." 
     Write-Output $n | Export-Csv \\Filepath\Unreachable.csv -Append -Encoding ASCII 
    } 
} 
+0

感謝您的更正 – Kevin

+0

請考慮upvoting和接受答案,如果這對你有幫助。 –