Я пытаюсь проанализировать файл журнала, чтобы извлечь дату из записи файла журнала.Я могу найти строку, но мой синтаксический анализ, кажется, не преобразовывает дату.
$SBError = "DbConnection"
$SBWebPath = "E:\Temp\server.log"
$result = Get-Content $SBWebPath | Select-String $SBError -casesensitive | Select -last 1 | Out-String
$result | Select-String '####<(\S+ \S+, \S+ \S+ \S+) \S+>' | ForEach-Object {
$DBdateTime = $_.Matches[0].Groups[1].Value -as [DateTime]
}
Write-Output $result
Write-Output $DBdateTime
server.log содержимое файла:
####<Dec 9, 2018 2:59:08,082 AM EST> <Info> <HTTP> Data flowing fine.
####<Dec 9, 2018 2:59:08,085 AM EST> <Warning> <HTTP> framework.db.DbConnection.
Вывод из сценария:
####<Dec 9, 2018 2:59:08,085 AM EST> <Warning> <HTTP> framework.db.DbConnection.
Переменная от $ DBdateTime не заполняется, я подозреваю, из-за неправильного или неправильного синтаксического анализа и / или включения миллисекунд в дату журнала.
Меня не волнуют миллисекунды, только месяц, месяц, год, минуты, минуты и метка AM / PM.Также не волнует EST, но следует помнить, что при изменении сервера на EDT это значение будет существовать вместо EST.
Любая помощь приветствуется.