PowerShell: extract timestamp from string

I am new to PowerShell and figured out how to extract the appropriate line from the log file:

C:\Documents and Settings\admin\Local Settings\Application Data\Microsoft\SyncToy\2.0\SyncToyLog.log:325:SYNC: 05/22/2012 14:54:55:857: SyncToy run of Profile Backup (C:\Documents and Settings\admin\, H:\Sync\) completed at 5:22/2012 2:54:55 PM.

What I would like to do is extract the first timestamp without milliseconds (one that uses 24-hour time) for the variable. Result:

05/22/2012 14:54:55

Any help would be appreciated.

+3
source share
3 answers

One way is to parse a date / time string using a regular expression, and then convert it to a date / time object:

$line = 'C:\Documents and Settings\admin\Local Settings\Application Data\Microsoft\SyncToy\2.0\SyncToyLog.log:325:SYNC: 05/22/2012 14:54:55:857: SyncToy run of Profile Backup (C:\Documents and Settings\admin\, H:\Sync\) completed at 5:22/2012 2:54:55 PM.'

$dateTimeString = [regex]::Matches($line, '(\d\d/\d\d/\d\d\d\d.+): ')[0].Groups[1].Value

Then convert it to a datetime object:

$provider = New-Object System.Globalization.CultureInfo "en-US"

$dateTime = [datetime]::ParseExact($dateTimeString, 'MM/dd/yyyy HH:mm:ss:fff', $provider)

Now you can display it or save it in a variable, but you want:

$dateTime -f 'MM/dd/yyyy HH:mm:ss'
+5
source

or simply:

($line -split ':\s+|:\d{3,}')[2]
+1
source

,

,

DefaultSource; Verbose; 8; 9/5/2016 1:05:19 PM; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DefaultSource; Verbose; 8; 9/5/2016 1:05:20 PM; yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
DefaultSource; Verbose; 8; 9/5/2016 1:05:20 PM; zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

PS C: \ > $lines = Get-Content "~\Documents\FileName.log"

'd/m/yyyy h: mm: ss [A/P] M' -

PS C: \ > $lines | % {[ ]:: ($ _, '(\ d +/\ D +/\ \\\)\S (\ D +:\D +:\D +)\s ([AP] )' )} |

DateTime

PS C: \ > [datetime] $dd = ($ lines |% {[regex]:: ($ _, '(\ d +/\ d +/\ d\d\d\d)\s (\d +:\d +:\d +)\s ([AP] M) ')} | - 1).

PS C: \> $ dd.GetType (). FullName
System.DateTime

PS C: \> $ dd
Monday, September 5, 2016 12:53:20 PM

0
source

All Articles