【发布时间】:2015-07-07 22:57:21
【问题描述】:
我想在输出文件中为我的测试连接结果添加时间戳。我正在从包含 TIMESTAMP 位置的 csv 文件导入数据。要创建输出文件,我正在使用 Export-Csv,如下面的代码 sn-p 所示。我尝试了各种方法来为输出文件中的每一行添加时间戳,但均未成功。我最近的尝试是使用过滤器,然后通过管道将其输入,但这也失败了。我对 Powershell 比较陌生,所以请原谅任何马虎。预先感谢您的任何帮助。
$printerList = Import-Csv "printerList.csv"
$releaseList = Import-Csv "releasestations.csv" #Object List for rows of csv file
$fileName = "printlog.csv"
$fileName2 = "releaselog.csv" #file name for log file
$printersDown = @() #string to list printers down in email
$printersDown += "****************"
$printersDown += "* Printer Down *"
$printersDown += "****************"
$printersDown += ""
$stationDown = @()
$stationDown += "****************"
$stationDown += "*Release Station Down*"
$stationDown += "****************"
$stationDown += ""
$downFlag = 0
$downFlag2 = 0 #flag to check when to send alert email
filter timestamp {"$(Get-Date -Format MM_dd_yy_HHmm):$_"}
foreach ($printer in $printerList){
if(Test-Connection -Count 1 -Quiet -ComputerName $printer.IP){
$printer.STATUS = "UP"
Write-Host ("{0}: UP" -f $printer.PrinterName)
}else{
Write-Host ("{0}: DOWN" -f $printer.PrinterName)
$printer.STATUS = "DOWN"
$printersDown += ("{0} : {1}" -f $printer.PrinterName, $printer.IP)
$downFlag = 1
}
}
foreach ($station in $releaseList){
if(Test-Connection -Count 1 -Quiet -ComputerName $station.ReleaseStation){
$station.STATUS = "UP"
Write-Host ("{0}: UP" -f $station.ReleaseStation)
}else{
Write-Host ("{0}: DOWN" -f $station.ReleaseStation)
$station.STATUS = "DOWN"
$stationDown += ("{0}" -f $station.ReleaseStation)
$downFlag2 = 1
}
}
# Write CSV file
$printerList | Export-Csv -Append -NoTypeInformation -Path logs\$fileName
$releaseList | Export-Csv -Append -NoTypeInformation -Path logs\$fileName2
【问题讨论】:
-
How to add timestamps to individual lines of Powershell & output? 的可能副本。你制作了一个过滤器,但我没有看到你在任何地方使用它
-
@Matt 不是完全重复的,OP 至少知道过滤器,他只是不能将过滤器应用于以 CSV 导出 - 这是以不同的方式完成的;)
-
@Vesper 过滤器的应用也包含在 dup 中。 op只做了一半的工作。但是,是的,因为它是 csv 导出属性是要走的路。
标签: csv powershell timestamp