我有一个日志文件,在脚本末尾,我需要浏览日志文件。如果它包含单词“ ERROR:或WARNING:”,我需要脚本将退出代码拍摄为0。如果不包含这些单词,我需要脚本将退出代码拍摄为1。基本上,如果找到了这些我需要它是真实的,如果不是,我需要它是虚假的。该日志将从ESP Scheduler查看,因此我需要我的脚本才能将失败或成功代码发布到ESP。
这是我到目前为止所拥有的:
$Exit = Get-Content 'H:\REPO\ADNEW\AlertLog.txt'
if ($Exit -cmatch "ERROR:") {exit 1}
if ($Exit -cmatch "WARNING:") {exit 1}
ifelse ($Exit -cnotmatch "WARNING:", "ERROR:") {exit 0}
echo $LASTEXITCODE
答案 0 :(得分:0)
在不使用Get-Content
开关的情况下使用-Raw
时,您将获得string
的集合(在极端情况下,单笔收益是{{1} }代替scalar
)。当对集合使用比较运算符时,它用作 filter ,并且不返回布尔值。综合这些知识,您可以执行以下操作:
array
这利用了正则表达式多行匹配选项,并通过使用$log = Get-Content -Path H:\AlertLog.txt -Raw
if ($log -cmatch '(?m)(ERROR|WARNING):') {
1
exit 1
}
0
exit 0
开关确保$log
是单个字符串而不是集合。此外,在退出带有该代码的进程之前,它会将退出代码回显到stdout流。