我想使用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
答案 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