我正在尝试编写一个脚本,该脚本将从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都显示在控制台中,但不按主机名排序。
我之前使用过这个相同的基本管道,没有任何问题,所以我对这里发生的事情感到有些不知所措。任何帮助都会很棒。
谢谢,
答案 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($_) } | ...