【问题标题】:Adding timestamps to every line in output file in Powershell在 Powershell 的输出文件中的每一行中添加时间戳
【发布时间】: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


【解决方案1】:

您可以使用过滤器:

filter timestamp {"$(Get-Date -Format o): $_"}
$result = & ping 192.168.1.1 | timestamp

来自How to add timestamps to individual lines of Powershell & output?

【讨论】:

  • 不要认为您对此有足够的代表,但这应该被标记为重复而不是重复作为答案。
  • @Matt 标记帖子仅在 15 个代表处可用。
  • @Matt 你提到的帖子是我最早寻求帮助的帖子之一。那篇帖子并没有解决我的问题,但它确实让我想到了使用过滤器,但我无法开始工作。经过广泛的搜索,我在这里或任何其他回答我问题的论坛上都找不到其他任何东西。所以我意识到这可能看起来像一个重复的帖子,但实际上我正在使用不同的方法来导出我的数据。
【解决方案2】:

您应该将时间戳直接添加到列表中的对象中。假设您的 CSV 有一个可用的“时间戳”字段,那么您可以像这样更改您的对象:

    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
    }       
    $printer.timestamp=(Get-Date -Format MM_dd_yy_HHmm)
}
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
    }       
    $station.timestamp=(Get-Date -Format MM_dd_yy_HHmm)
}

应该这样做。这应该可以工作,因为Export-CSV 枚举了提供的列表中的字段,并且由于所有对象现在都有另一个字段,因此它将被正确导出。

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多