-3
XYZ 调度程序代理“XYZ”将于 2019 年 11 月 12 日星期二 01:01:49 开始任务“12821_1”。

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

4

1 回答 1

0

如果您的文件始终具有帖子中描述的格式,您可以执行以下操作:

$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
于 2019-11-13T12:26:49.510 回答