【问题标题】:test-connection output to csv file with hostname and IPaddress测试连接输出到带有主机名和 IP 地址的 csv 文件
【发布时间】:2014-09-10 04:23:48
【问题描述】:

目前我有以下脚本可以从包含几列的 csv 文件导入。我感兴趣的是主机名和 IP 地址。 Ipaddress = 服务器的 IP 地址 主机名 - 服务器的主机名

基本上我的目标是对我们 CMDB 中当前活动的服务器进行审计(大量未正确删除的旧垃圾)

$servers = import-csv 'config-network devicetest.csv'
$collection = $()
foreach ( $IPAddress in $servers)
{
$status = @{ "ServerName" = $Hostname; "TimeStamp" = (Get-Date -f s) }
if (Test-Connection -IPAddress $IPAddress -Count 2 -ea 0 -quiet)
{ 
    $status["Results"] = "Active"
} 
else 
{ 
    $status["Results"] = "Inactive" 
}
New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
$collection += $serverStatus

}
$collection | Export-Csv .\ServerStatus.csv -NoTypeInformation

我的目标是在每个 IP 地址上运行测试连接并输出到具有时间戳/结果/服务器名(即主机名)的文件。

目前我总是得到“不活动”的结果,我认为这是因为我没有从 csv 调用正确的字段。 我对从 csv 导入相当陌生,因此有关如何正确导入和导出特定列的任何帮助都会非常有帮助。 我在网络上进行了一些搜索,但没有一个能真正清楚地解释它或在这种情况下。

提前谢谢你。

【问题讨论】:

  • 顺便说一句,您不需要在哈希表中引用名称或在命令周围放置括号,即这工作得很好:@{ServerName = $hostname; Timestamp = Get-Date -f s}

标签: powershell csv


【解决方案1】:
Try to change these lines:

$status = @{ "ServerName" = $IPAddress.Hostname; "TimeStamp" = (Get-Date -f s); "Results"="" }
...
....
(Test-Connection -IPAddress $IPAddress.ipaddress -Count 2 -ea 0 -quiet)
...
..

.

【讨论】:

  • 我在踢自己。我最初有 $servers.$hostname 等....删除了 $ 符号,一切正常。我已经有一段时间没有做任何导入的东西了。
  • 谢谢!让我看到了自己的错误!
猜你喜欢
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 2011-03-23
  • 2011-08-29
相关资源
最近更新 更多