csv PowerShell -从文本列表中获取服务器名称和IP

pgpifvop  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(81)

我正在使用此链接中提供的以下建议:Experts-Exchange
我正尝试获取服务器(主机名)列表,并将主机名和IP地址保存在.csv文件中。
使用下面的PowerShell代码,我确实在结果窗格中看到了每个服务器的主机名和相同的IP地址。

$servers = get-content "C:\TEMP\servers.txt"
$serversAndIps = "C:\TEMP\List_of_servers_with_ips.csv"

$results =@()
foreach ($server in $servers) {
  $results =@()
    $result = "" | Select ServerName , ipaddress
    $result.ipaddress = [System.Net.Dns]::GetHostAddresses($server)
  foreach($a in $addresses) {
    "{0},{1}" -f $server, $a.IPAddressToString
  }
    $result.servername = $server
    $results += $result
}
$results | export-csv -NoTypeInformation $serversandips

当我打开.csv文件时,我得到这个:

"ServerName","ipaddress"
"Server_name_1","System.Net.IPAddress[]"

如果我运行这个PowerShell脚本,我可以在结果窗格中获得主机名和正确的IP地址。我只需要知道如何将结果传输到.csv文件。

$servers = get-content "C:\TEMP\servers.txt"
foreach ($server in $servers) {
  $addresses = [System.Net.Dns]::GetHostAddresses($server)
  foreach($a in $addresses) {
    "{0},{1}" -f $server, $a.IPAddressToString
  }
}

有什么建议吗?

ivqmmu1c

ivqmmu1c1#

看起来像是工作中的一些简单的打字错误。

  • $result在循环中被重置
  • 循环内的$addresses未分配。
  • $result.ipaddress未分配给输出对象的$a.IPAddressToString。

试试这个:

$servers = get-content "X:\servers.txt"
$serversAndIps ="X:\test.csv"

$results = @()
foreach ($server in $servers)
{
    $result = "" | Select ServerName , ipaddress
    $result.ipaddress = [System.Net.Dns]::GetHostAddresses($server)
    $addresses = [System.Net.Dns]::GetHostAddresses($server)

    foreach($a in $addresses) 
    {
        "{0},{1}" -f $server, $a.IPAddressToString
        $result.ipaddress = [System.Net.Dns]::GetHostAddresses($server)
    }

    $result.servername = $server
    $result.ipaddress = $a.IPAddressToString
    $results += $result
}

$results | export-csv -NoTypeInformation $serversandips

相关问题