windows - PowerShell 脚本晨检
问题描述
我有以下脚本,专门针对 HP 服务器运行,以识别 Windows 事件日志中是否存在磁盘错误,然后发送一封电子邮件,其中包含来自日志的消息或无需报告。问题是在测试脚本时,当我知道有(如果我可以在日志中看到的东西的来源)时,总是什么都不说要报告,或者它从完全不同的日志中打印出一条消息。
foreach ($Server in $servers) {
$event = Get-EventLog -ComputerName $server -LogName "system" -After ([DateTime]::Today)
if ($event.Source -eq "HP Smart Array" -or $event.Source -eq "HpCISSs2" -or $event.Source -eq "disk") {
$body += Write-Output "Server $server has an error $($event.Message) `n" ForegroundColor Red
} else {
$body += Write-Output "Server $server has nothing to report `n"
}
}
解决方案
您的$event
变量包含元素数量。您不能将它们与-eq
运算符进行比较。你可以改用.Contains()
方法。像这样:
if ($event.Source.Contains("HP Smart Array") -or $event.Source.Contains("HpCISSs2") -or $event.Source.Contains("disk"))
推荐阅读
- jquery - 检查元素是否有显示:所有内容加载后都没有
- angular - 使用 AOT 构建项目时,自定义库中的 Angular 8 延迟加载路由在运行时中断
- javascript - [JS, html]未捕获的类型错误:无法读取 null 的属性“addEventListener”
- sql-server - SSRS:IIF 语句更改填充颜色错误
- regex - 提取 Google 表格单元格中的部分内容
- javascript - TypeError:无法在“Node”上执行“appendChild”:参数 1 不是“Node”类型。尝试附加反应元素时
- php - xpath 表达式的结果是:[object Text]。它应该是一个元素
- swift - 在模拟器上录制和播放音频,但在真实的 iPhone 设备上不行
- visual-studio - 用于 Visual Studio 构建的示例 Jenkins 文件?
- c# - 脚手架后的 Entity Framework Core 和 MySQL 错误与日期时间值