如何使用当前日期 (yyyy-mm-dd) 作为带有Get_Content命令的选择字符串模式的一部分



我有一个带有VBA代码的excel工作簿,该代码执行Powershell命令行脚本以根据模式检查从日志文件中提取信息。

我遇到的问题是有多行具有匹配的文本,唯一的区别是日期。

我正在寻找一种方法来添加当前日期,格式为 yyyy-mm-dd,作为匹配标准。

当前命令行代码为:

Get-Content '\loggingserver.log' | Select-String -Pattern "[d]{4}-[d]{2}-[d]{2}.*finished executing" -CaseSensitive

此代码返回 4 行的预期结果集:

139907928364800 [488] 2019-09-02 Process "Metadata Control":  finished executing.
139856228501248 [4311] 2019-09-03 Process "Metadata Control":  finished executing.
139855148627712 [8289] 2019-09-04 Process "Metadata Control":  finished executing.
139854016616192 [11892] 2019-09-05 Process "Metadata Control":  finished executing.

但是,我只想返回最后一行,其中日期等于 2019-09-05(当前日期(。

任何建议将不胜感激。

选择字符串 cmdlet 还具有-Path参数,因此无需在此处使用Get-Content

(Select-String -Path '\loggingserver.log' -Pattern "[d]{4}-[d]{2}-[d]{2}.*finished executing" -CaseSensitive | Select-Object -Last 1).Line

返回

139854016616192 [11892] 2019-09-05 Process "Metadata Control":  finished executing.
$today = (get-Date).ToString("yyyy-MM-dd")
$filename = "C:temptest.txt"
$Search = Select-String -Path $filename -Pattern $today | Select-Object -ExpandProperty 'LineNumber'
foreach ($single_Number in $Search) {
(Get-Content "C:temptest.txt")[$single_Number - 1]
}

这将输出包含当前日期的行,或者当您添加天数(例如昨天(的任何其他日期时:$today = (get-Date).AddDays(-1).ToString("yyyy-MM-dd")

如果您想要的行是 -always- last,则可以选择最后一行。

Get-Content '\loggingserver.log' |
Select-String -Pattern "[d]{4}-[d]{2}-[d]{2}.*finished executing" -CaseSensitive |
Select-Object -Last 1

如果今天没有进行最后一个条目,这可能会有所帮助。例如,最后一个条目是在星期五,但今天是星期一。

最新更新