2015-08-26 89 views
0

我正在编写脚本以根据错误日志中的错误向特定人员发送电子邮件。我在特定的时间间隔内执行此操作,并试图编写比较函数。从“ddd mmm dd HH:MM:SS yyyy”格式的变量获取日期

然而,在我这样做之前,我需要将日期从错误日志中提取出来。错误日志中每行的前24个字符是日期,其格式为ddd mmm dd HH:MM:SS yyyy。我已经能够解析(使用Substring()方法)错误行中的前24个字符。

我的最终目标是将错误日志中每行中的每个日期与动态日期值进行比较,以找出脚本最后一次运行的时间点。

编辑:我的问题是我如何获得一个变量中的字符串,然后我可以比较的日期格式。

我似乎无法得到任何工作,也就是在变量(故障排除)字符串为周一8月24日21时01分52秒2015年

+1

那么问题是什么?这只是列出了你所做的。 – Adriaan

+0

对不起,我已经更新了我的问题实际上有一个!对不起,关于 –

+0

http://winpowershell.blogspot.com/2006/09/systemdatetime-parseexact.html –

回答

0

基本上,你有两个选择:

  1. 格式参考日期因此而该字符串比较从日志中提取的字符串:

    $fmt = 'ddd mmm dd HH:MM:SS yyyy' 
    $refdate = Get-Date -f $fmt 
    if ($refdate -eq $dateFromLog) { ... } 
    
  2. 解析从日志中的字符串转换为实际日期,并将它们与基准日:

    $fmt = 'ddd mmm dd HH:MM:SS yyyy' 
    $refdate = Get-Date 
    $culture = [Globalization.CultureInfo]::InvariantCulture 
    $date = [DateTime]::ParseExact($dateFromLog, $fmt, $culture) 
    if ($refdate -eq $date) { ... } 
    
+0

我想我需要比较日期,因为我不能使用-eq,因为可能没有完全匹配,我只是每次尝试返回大约30分钟左右 –

0

对不起球员,所以

$file = 'Mon Aug 24 21:01:52 2015 blah blah blah blah blah' 
$test = $file.Substring(0,24) 
$DateString = $test.toString() 
$theDTString = "Mon Aug 24 21:01:52 2015".toString() 
$theDateTimeObject = ([datetime]::ParseExact($DateString,"ddd MMM dd HH:mm:ss yyyy",$null)) 

的作品,我的问题是,我有三个“这是我应该知道的小写字母。我快速冲过去,这是我的坏人。感谢您的全力帮助

相关问题