Powershell 管道导出到 csv 正在丢失数据

Powershell 管道导出到 csv 正在丢失数据

我正在尝试编写一个脚本,该脚本将从 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 都会显示在控制台中,但不会按主机名排序。

我以前用过同样的基本管道,没有出现任何问题,所以我有点不知道这里发生了什么。任何帮助都非常感谢。

谢谢,

答案1

休息了一下又回来了。意识到我错过了什么,现在一切正常。

$SortIP =@()
ForEach ($IPADDR in $IPADDR)
{
  $SortIP += [System.Net.DNS]::GetHostbyAddress($IPADDR) | Add-Member -Name IP -Value     $IPADDR -MemberType NoteProperty -PassThru | select IP, HostName 
}

$SortIP | sort -property Hostname | export-csv "C:\Users\douglasfrancis\Desktop\ReverseLookup.csv" -NoTypeInformation

基本上添加了“$SortIP”变量并使用“+= [System.Net.DNS]”而不是我之前使用的“=[System.Net.DNS]”,它完全按照我的预期执行。

答案2

这对我来说可能有很大帮助。我一直在尝试添加到脚本中,以便它记录没有 DNS 反向查找的条目。在我运行的文件中,我在 2700 个列表中有 9 个 IP 没有反向查找。

到目前为止,我只能记录成功。我尝试包含的 9 个文件也出现了如下错误:

ERROR: Exception calling "GetHostByAddress" with "1" argument(s): "The requested name is valid, but no data of the requested type was found"
ERROR: At C:\SANDBOX\Reverse DNS Pipe fails CSV with SORT.ps1:21 char:48
ERROR: +   $SortIP += [System.Net.DNS]::GetHostbyAddress <<<< ($IPADDR) | Add-Member -Name IP -Value $IPADDR -MemberType NoteProperty -PassThru | select IP, HostName
ERROR:     + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
ERROR:     + FullyQualifiedErrorId : DotNetMethodException
ERROR:

这是我正在运行的脚本:

# getting the IP's from the file

$IPADDR = Get-Content "C:\SANDBOX\inputips.txt"
$SortIP =@()

foreach ($IPADDR in $IPADDR)
{
  $SortIP += [System.Net.DNS]::GetHostbyAddress($IPADDR) | Add-Member -Name IP -Value $IPADDR -MemberType NoteProperty -PassThru | select IP, HostName 
}

$SortIP | sort -property Hostname | export-csv "C:\SANDBOX\ReverseLookupSORT.csv" -NoTypeInformation

相关内容