【问题标题】:Condition in PowerShell script that read log files读取日志文件的 PowerShell 脚本中的条件
【发布时间】:2021-03-28 07:24:48
【问题描述】:

我从任务计划程序运行 .bat 脚本,并为每个脚本创建一个 .log 文件。 在日志文件中,我可以看到 .bat 脚本是否成功结束。到目前为止,我在下面有这个基本脚本,它检查字符串“Finished with errors”是否在 .log 文件中:

  • 是 -> 失败

  • 否 -> 成功

    Get-ChildItem C:\datalogs*.log | ForEach-对象 { [pscustomobject] @{ 名称 = $.Name 日期 = $.LastWriteTime 状态 = ('SUCCESS', 'FAILED')[(Select-String -Quiet 'Finished with errors' $_.FullName)] } }

我想通过添加一些条件来更细致地了解我所做的监控: 如果在 .log 文件中我有:

  • '完成。' -> 返回成功
  • '完成但有错误' -> 返回 FAILED
  • '以警告结束' -> 返回 WARNING
  • .log 文件中没有字符串 'Finished' -> 返回 FAILED

希望你能帮忙。

【问题讨论】:

    标签: powershell


    【解决方案1】:
    function Get-Status($file) {
        if (Select-String -Quiet 'Finished with errors' $file) {
            return "FAILED"
        } elseif (Select-String -Quiet 'Finished with warning' $file) {
            return "WARNING"
        } elseif (Select-String -Quiet 'Finished' $file) {
            return "SUCCESS"
        } else {
           return "FAILED"
        }
    }
    
    Get-ChildItem C:\datalogs*.log | % { 
        [PSCustomObject] @{ 
            Name = $_.Name; 
            Date = $_.LastWriteTime; 
            Status = Get-Status($_.FullName)
        } 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      相关资源
      最近更新 更多