2017-09-14 67 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和接受答案,如果这对你有帮助。 –