在powershell

时间:2017-08-01 13:05:57

标签: powershell csv datetime

我想使用PowerShell在csv文件中将datetime转换为Epoch格式。在csv文件中我只有时间数据,我想使用csv中指定的当前日期和时间将其转换为Epoch格式。

in.csv

"192.168.1.2","01-any1TEST ","Ping","Down at least 3 min","17:25:14",":Windows 2012 Server"
"192.168.1.2","02-any2TEST  ","Ping","Down at least 4 min","17:25:40",":Unix Server"
"192.168.1.2","03-any3TEST ","Ping","Down at least 3 min","17:26:21",":windows host " 

我的发现

使用以下两者的组合应该可行。我面临的主要问题是我无法将当前日期与csv文件中的时间结合起来。

Import-Csv ".\out.csv" |
ForEach-Object {
    $_.Date = [datetime]::Parse($_.Date).ToString('MM/dd/yyyy HH:mm')
}

Get-Date -Date "12/31/2015 23:59:59" -UFormat %s

3 个答案:

答案 0 :(得分:0)

使用Get-Date时,您可以选择手动覆盖值或使用其他datetime

例如:

Import-Csv ".\out.csv" |
ForEach-Object {
    $tempDate = [datetime]::Parse($_.Date).ToString('MM/dd/yyyy HH:mm')
    Get-Date -Hour $tempDate.Hour -Minute $tempDate.Minute -UFormat %s
}

答案 1 :(得分:0)

我这样做:

Import-Csv ".\out.csv" |
ForEach-Object {
    $_.Date = Get-Date -Date $_.Date -UFormat %s
}

如果您想更明确地了解它所做的事情,您可以将时间转换为可以添加到日期的时间跨度。然后你可以将它传递给Get-Date来格式化它:

Import-Csv ".\out.csv" |
ForEach-Object {
    $_.Date = [DateTime]::Today + [Timespan]::Parse($_.Date) | Get-Date -UFormat %s
}

[DateTime]::Today今天是午夜(00:00:00)。

好的,试试下面的代码。它会在找到无法解析的日期时向控制台写入警告消息。它不会解决问题,但它会告诉你问题出在哪里。

Import-Csv ".\out.csv" |
ForEach-Object {
    $t = [timespan]::Zero
    if ([Timespan]::TryParse($_.Date,[ref]$t)) {
        $_.Date = [DateTime]::Today + $t | Get-Date -UFormat %s
    }
    else {
        Write-Warning "Unable to parse timespan '$($_.Date)' for record $($_)"
    }
}

答案 2 :(得分:0)

这对我来说非常适合2.0而不是4.0版本。如果可能请告诉我为什么不在PowerShell 4.0上工作。

$EventTime = $($s.EventTime)

$ value = get-date -format d $ Imported = Import-Csv'C:\ PathToFIle \ out.csv'

$ Output = foreach($ i in $ Imported){     foreach($ event in $ EventTime){

    $time=$i.eventtime

    $fulltime =$value+' '+$time


     $i.EventTime = Get-Date -Date $fulltime -UFormat %s


}
$i

}

$输出 $输出| Export-Csv'C:\ PathToFIle \ TestComputers.csv'NoTypeInformation

相关问题