使用 PowerShell 从记事本中提取日期和时间戳

Pull out the date and time stamp from notepad using PowerShell

XYZ Dispatcher Agent 'XYZ' is starting task '12821_1' at Tue Nov 12 01:01:49 2019.

以上是日志文件中的第一行,我想使用 Powershell 提取变量中的 "Tue Nov 12 01:01:49 2019"。我试过使用 REGEX 但遇到了问题。日志文件将始终以此类行开头,因此我需要提取日期和时间以了解使用此日志的任务的开始时间。

如果您的文件始终采用 post 中描述的格式,您可以执行以下操作:

$regex = '\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \d{4}'
$firstline = Get-Content '\somepath\AgentLog_12821_1_12821_1.dsp.log' -TotalCount 1 |
    Where-Object {$_ -match $regex}
$dateTimeString = $Matches[0]

$Matches 自动变量是基于之前成功 -match 结果。它需要成功匹配才能自动更新变量。您可以 $null 值。


如果要捕获文件中的所有日期匹配项(每行一个),您可以使用以下命令。这将捕获索引集合中的所有日期 ($dateTimeString)。

$regex = '\w{3} \w{3} \d{2} \d{2}:\d{2}:\d{2} \d{4}'
$dateTimeString = (Select-String -Path '\somepath\AgentLog_12821_1_12821_1.dsp.log' -Pattern $regex).Matches.Value
$dateTimeString[0] # First date