2012-07-26 7 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 
} 

Référence: Convert Unix time with PowerShellUnix conversion du temps avec Powershell

Je suis curieux sur la façon de gérer les entrées sans données.

Par exemple, voici quelques sortie de ce script:

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 

Toutes les idées sur ce sujet?

Merci

Répondre

0

Dans ce cas, vous souhaitez sauter juste l'appel de méthode et de remplacer une valeur par défaut, par exemple:

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

J'ai apporté quelques modifications au code. Cela ne semble toujours pas fonctionner. Je continue d'obtenir l'erreur add seconds. Il n'imprime aucun commentaire "testing" sur les éléments qui ne contiennent pas $ visited. – sysforensics

1

Cette erreur semble que vous donnez AddSeconds un argument qui est trop grand ou trop petit, plutôt que des données manquantes. L'appel AddSeconds avec $null ou 0 retournera la date d'origine inchangée.

Cela dit — et je ne peux pas être sûr, puisque vous n'avez pas fourni l'entier réel que vous essayez de convertir — j'ai eu le même problème jusqu'à ce que je compris que les données que je recevais était milli secondes, pas secondes. Vous pouvez utiliser AddMilliseconds à la place, ou diviser le nombre par 1000 avant d'utiliser AddSeconds si vous ne vous souciez pas de la perte de précision. Crédit this answer pour m'indiquer dans la bonne direction.