Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 将系统日期与日志日期进行比较,并仅在系统日期之后显示日志条目-pshell_Powershell_Date_Split - Fatal编程技术网

Powershell 将系统日期与日志日期进行比较,并仅在系统日期之后显示日志条目-pshell

Powershell 将系统日期与日志日期进行比较,并仅在系统日期之后显示日志条目-pshell,powershell,date,split,Powershell,Date,Split,我有一个日期格式为yyyy-MM-dd HH:MM:ss,FFF的日志文件,例如: 2018-11-20 15:45:58,011 [No|SeSt] [1] [Session#-1,Username=1] INFO is running 2018-11-20 15:45:58,021 [No|SeSt] [2] [Session#-2,Username=2] INFO is running 2018-11-20 15:45:58,031 [No|SeSt] [3] [Session#-3,

我有一个日期格式为
yyyy-MM-dd HH:MM:ss,FFF
的日志文件,例如:

2018-11-20 15:45:58,011 [No|SeSt] [1] [Session#-1,Username=1] INFO  is running
2018-11-20 15:45:58,021 [No|SeSt] [2] [Session#-2,Username=2] INFO  is running
2018-11-20 15:45:58,031 [No|SeSt] [3] [Session#-3,Username=3] INFO  is running
我需要将其与系统日期进行比较,并且只显示大于设置的系统日期的日志

我有一个
$logDate
已经是
yyyy-MM-dd HH:MM:ss,FFF
格式,但是
$.[datetime]
实际上是一个系统日期,日期为今天和00:00:00000

get-content -Path $file -Tail 100 |  where-object {  $_.[datetime] $_.split()[0] -le $logDate}
我可能需要先从日志文件中提取日期


谢谢

这正是您所描述的。然而,我想不出你为什么要在将来测试日期。。。[咧嘴笑]

输出

2018-11-21 21:21:21,011 [No|SeSt] [1] [Session#-1,Username=1] INFO  is running
2018-11-22 22:22:22,011 [No|SeSt] [1] [Session#-1,Username=1] INFO  is running
2018-11-23 23:23:23,011 [No|SeSt] [1] [Session#-1,Username=1] INFO  is running

这就是你所描述的。然而,我想不出你为什么要在将来测试日期。。。[咧嘴笑]

输出

2018-11-21 21:21:21,011 [No|SeSt] [1] [Session#-1,Username=1] INFO  is running
2018-11-22 22:22:22,011 [No|SeSt] [1] [Session#-1,Username=1] INFO  is running
2018-11-23 23:23:23,011 [No|SeSt] [1] [Session#-1,Username=1] INFO  is running

你的命令没有那么糟糕,而且比@Lee_Dailey的回答有效得多,
必须删除
[datetime]
前面的
$.

但只使用日期进行比较

假设要比较所有日期元素,包括秒的分数:

## Q:\Test\2018\11\20\SO_53398055.ps1
$File = '.\SO_53398055.log'
$dtFormat = 'yyyy-MM-dd HH:mm:ss,FFF'
$logDate = [datetime]::ParseExact('2018-11-20 15:45:58,018',$dtFormat,$Null)

Get-Content -Path $file -Tail 100 |
  Where-Object {[datetime]::ParseExact( ($_.split('[')[0]).Trim(), $dtFormat,$Null) -gt $logDate}
Where看起来有点拥挤,因为我使用
[
分割输入行,然后需要修剪尾随空间。
我选择的
logDate
介于第一个和第二个日志条目之间,正如您的文本所说的
仅记录大于设置的系统日期的日志
与您的代码比较少的日志,甚至我期望此输出

> Q:\Test\2018\11\20\SO_53398055.ps1
2018-11-20 15:45:58,021 [No|SeSt] [2] [Session#-2,Username=2] INFO  is running
2018-11-20 15:45:58,031 [No|SeSt] [3] [Session#-3,Username=3] INFO  is running

你的命令没有那么糟糕,而且比@Lee_Dailey的回答有效得多,
必须删除
[datetime]
前面的
$.

但只使用日期进行比较

假设要比较所有日期元素,包括秒的分数:

## Q:\Test\2018\11\20\SO_53398055.ps1
$File = '.\SO_53398055.log'
$dtFormat = 'yyyy-MM-dd HH:mm:ss,FFF'
$logDate = [datetime]::ParseExact('2018-11-20 15:45:58,018',$dtFormat,$Null)

Get-Content -Path $file -Tail 100 |
  Where-Object {[datetime]::ParseExact( ($_.split('[')[0]).Trim(), $dtFormat,$Null) -gt $logDate}
Where看起来有点拥挤,因为我使用
[
分割输入行,然后需要修剪尾随空间。
我选择的
logDate
介于第一个和第二个日志条目之间,正如您的文本所说的
仅记录大于设置的系统日期的日志
与您的代码比较少的日志,甚至我期望此输出

> Q:\Test\2018\11\20\SO_53398055.ps1
2018-11-20 15:45:58,021 [No|SeSt] [2] [Session#-2,Username=2] INFO  is running
2018-11-20 15:45:58,031 [No|SeSt] [3] [Session#-3,Username=3] INFO  is running

您想从未来获取“今天”之后的项目吗?[grin]还是想在某个指定日期之后获取行?或者您想从今天获取在某个时间之后的项目?您想从未来获取“今天”之后的项目吗?[grin]或者你想在某个指定日期后获取行?或者你想从今天开始在某个特定时间后获取项目?是的-le应该是-gt,因为我正在记录日志中显示的内容:)-抱歉,我复制/粘贴时出错谢谢,是的,我运行此操作是为了在服务启动和完全启动时检查日志文件。这意味着即使是服务ice正在“运行”并不意味着它真正启动了,只有日志才能告诉我服务是否启动。耶-le应该是-gt,因为我正在记录日志中显示的内容:)-对不起,复制/粘贴时我的错误谢谢,是的,我运行此功能是为了在服务启动和完全启动时检查日志文件。这意味着即使服务也在“运行”这并不意味着它真的启动了,只有日志才能告诉我服务是否启动了。