Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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自定义日期和时间_Powershell_Date_Search - Fatal编程技术网

搜索中的Powershell自定义日期和时间

搜索中的Powershell自定义日期和时间,powershell,date,search,Powershell,Date,Search,新手PS问题-修改问题,因为到目前为止,我认为我对基于社区帮助的解决方案的支持率约为95% 我的PS脚本正在查询一个.log文件,如果它符合-15分钟规则以及一个文本选择,它将提取我想要的所有记录。这太棒了 我遇到的问题是,如果满足这些条件,我需要通过电子邮件将结果发送给我。正如你在下面的代码中看到的,我有邮件设置,但是当涉及到邮件正文时,我没有得到任何数据。我试过设置Body=$Body,但它坏了。关于如何分类有什么建议吗 当前代码: $qtime = Get-Date (Get-Date).

新手PS问题-修改问题,因为到目前为止,我认为我对基于社区帮助的解决方案的支持率约为95%

我的PS脚本正在查询一个.log文件,如果它符合-15分钟规则以及一个文本选择,它将提取我想要的所有记录。这太棒了

我遇到的问题是,如果满足这些条件,我需要通过电子邮件将结果发送给我。正如你在下面的代码中看到的,我有邮件设置,但是当涉及到邮件正文时,我没有得到任何数据。我试过设置Body=$Body,但它坏了。关于如何分类有什么建议吗

当前代码:

$qtime = Get-Date (Get-Date).AddMinutes(-15) -Format 'yyyyMMddHHmm'
$srch = [regex]::Escape('Licensing: no speech license available for the feature')
$SEL = Select-String -Path C:\ProgramData\Nuance\Enterprise\system\diagnosticLogs\nrs.log -Pattern "Licensing: no speech license available for the feature"
 
if ($SEL -ne $null)
{
 $body =  Get-Content C:\ProgramData\Nuance\Enterprise\system\diagnosticLogs\nrs.log | Where  { $_ -gt $qtime -and $_ -match $srch}
    #    Send-MailMessage -From 'me@domain.com' -To  'me@domain.com' -Subject 'TTS License Error Detected on ServerA' -SmtpServer 'smtp.domain.com' -body $body
}
else
{
    ## Do Nothing
}
提前谢谢-

J

您可以尝试提取每行的前14个字符,并将它们解析为
[datetime]
值,但实际上不需要这样做

大端日期格式(例如,像您的
YYYYMMddHHmmss
格式)是按字母顺序排列的-也就是说,如果一个日期早于另一个日期,则按字母顺序排序时,它也将位于它之前

这意味着我们可以使用相同格式的日期/时间字符串,描述截止日期,然后将日志文件中的行与以下行进行比较:

$since = Get-Date (Get-Date).AddYears(-4) -Format 'YYYYMMdd'

# this will only return the last 4 years worth of logs
Get-Content old.log | Where { $_ -gt $since } 

请看一下
[datetime]::ParseExact()
方法。[咧嘴笑]我意识到我已经把邮件命令注释掉了。我只是暂时以这种方式运行它来获取我的结果集。mail命令与解析您所说的日期字符串究竟有什么关系。。。还是使用我指出的解析方法?感谢指针!我能够成功地将日期设置得恰到好处,并减去所需的15分钟。我的PS脚本使用的是带有-Pattern“xyz”的Select String命令。我需要看一下| Where的不同语法吗?因为它目前不喜欢这样。或者我应该添加一些东西来替换日志文件中的$作为我的日期时间?提前道歉,powershell的第一天…@JohnEllis请添加您已有的代码:-)