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