Import-Module SQLite
mount-sqlite -name places -data (resolve-path C:\Users\malware_win7x86\Desktop\places.sqlite)
$places = Get-ChildItem places:\moz_places
foreach ($entry in $places)
{
[datetime]$origin = '1970-01-01 00:00:00'
$visited = $entry.last_visit_date
if ($visited) {
$vtime = $origin.AddSeconds($visited)
} else {
$vtime = 'testing'
}
write-host ""
$entry.url,
$entry.visit_count,
$vtime
}
参考:Convert Unix time with PowerShell
我很好奇如何处理没有数据的条目。
例如,以下是该脚本的一些输出:
http://sysforensics.org/
1
Exception calling "AddSeconds" with "1" argument(s): "Value to add was out of range.
Parameter name: value"
At line:7 char:28
+ $vtime = $origin.AddSeconds <<<< ($visited)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
有关于此的任何想法吗?
由于
答案 0 :(得分:1)
该错误看起来像是给AddSeconds
一个太大或太小的参数,而不是丢失数据。使用AddSeconds
或$null
致电0
将返回原始日期不变。
话虽如此 - 我无法确定,因为你没有提供你想要转换的实际整数 - 我遇到了同样的问题,直到我意识到我收到的数据是在毫秒秒,而不是秒。您可以使用AddMilliseconds
代替,或者在使用AddSeconds
之前将数字除以1000,如果您不关心精度的损失。
感谢this answer指出我正确的方向。
答案 1 :(得分:0)
在这种情况下,您只需跳过方法调用并替换默认值,例如:
if ($visited) { # or maybe $ivisited -is [int] or whatever your criterion is
$vtime = $origin.AddSeconds($visited)
} else {
$vtime = $null
}