Powershell Script-导出反向DNS的CSV失败。

时间:2014-05-02 04:55:23

标签: powershell csv scripting dns pipe

我正在尝试编写一个脚本,该脚本将从IP地址的.txt文件中获取输入。执行反向DNS查找以获取IP地址的主机名,然后将该数据导出到.csv文件中。

这是我到目前为止所拥有的。

# getting the IP's from the file


$IPADDR = Get-Content "C:\Users\douglasfrancis\Desktop\IP_Test.txt"


ForEach ($IPADDR in $IPADDR)
{
  [System.Net.DNS]::GetHostbyAddress($IPADDR) | Add-Member -Name IP -Value $IPADDR -    MemberType NoteProperty -PassThru | select IP, HostName | sort -property Hostname | export-    csv "C:\Users\douglasfrancis\Desktop\ReverseLookup.csv" 

}

现在如何创建的CSV文件将包含我分配的列标题以及列表中包含主机名的最后一个IP地址。所以它以其他方式放弃其他一切。

如果我在export-csv注释掉的情况下运行它,那么所有的IP都显示在控制台中,但不按主机名排序。

我之前使用过这个相同的基本管道,没有任何问题,所以我对这里发生的事情感到有些不知所措。任何帮助都会很棒。

谢谢,

2 个答案:

答案 0 :(得分:1)

在将结果导出为CSV之前,您应该将结果放入数组中:

# getting the IP's from the file

$IPADDRS = Get-Content "C:\Users\douglasfrancis\Desktop\IP_Test.txt"

$result = @()
ForEach ($IPADDR in $IPADDRS)
{
  $result += [System.Net.DNS]::GetHostbyAddress($IPADDR) | Add-Member -Name IP -Value $IPADDR -MemberType NoteProperty -PassThru | select IP, HostName
}
$result  | sort -property Hostname | export-csv "C:\Users\douglasfrancis\Desktop\ReverseLookup.csv" -NoTypeInformation

@David Braban是真的,这不是你的麻烦,但是我使用$IPADDRS代表集合,$IPADDR代表每个值,这样它就更正确了(可读)/

答案 1 :(得分:0)

在您的代码中,我看到:

ForEach ($IPADDR in $IPADDR)

这是非常错误的:你使用相同的变量作为你的集合和变量来迭代。

使用:

$ipaddr | %{ [System.Net.DNS]::GetHostbyAddress($_) } | ...