在PowerShell中退出代码

时间:2019-03-21 14:38:40

标签: powershell

我有一个日志文件,在脚本末尾,我需要浏览日志文件。如果它包含单词“ 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

1 个答案:

答案 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流。