2012-07-26 80 views
1
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 PowerShellUNIX時間轉換使用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

在這種情況下,你只跳過方法調用,並替換默認值,例如:

if ($visited) { # or maybe $ivisited -is [int] or whatever your criterion is 
    $vtime = $origin.AddSeconds($visited) 
} else { 
    $vtime = $null 
} 
+0

我對代碼做了一些修改。它似乎仍然沒有工作。我不斷收到添加秒的錯誤。它不會打印任何「測試」註釋,或者不包含$ visited的項目。 – sysforensics 2012-07-27 10:33:35

1

該錯誤看起來像你給AddSeconds的說法,是不是太大或小,而不是缺少數據。撥打AddSeconds$null0將返回原始的日期不變。

話雖這麼說—,我不能肯定,因爲你沒有提供,你想轉換—我有同樣的問題,直到我意識到,我是接收數據是實際整數毫秒秒,而不是秒。您可以使用AddMilliseconds代替,或者在使用AddSeconds之前將數字除以1000,如果您不關心精度的損失。

歸功於this answer指向我在正確的方向。