我只是一个基本的,我是Powershell的新手。试着让下面的陈述有效。
$date = (Get-Date).AddDays(-1)
$currentdate = Get-Date -Format d
$check = Get-WinEvent -FilterHashtable @{LogName="CloudBackup";StartTime=$date;ID=3} *>$null
if ($check -eq $true) {
Write-Host "`nOK: Azure Backup was successful on $currentdate"
exit 0
} else {
Write-Host "`nCritical: Problem with Azure Backup - $currentdate"
exit 2
}
特别if ($check -eq $true)
似乎没有达到预期效果。由于$check
正在检查事件日志中的事件ID 3,如果它在那里它应该返回true,如果不是false。不幸的是,它每次都只返回假。
有人可以提出建议吗?有没有更好的方法呢?
答案 0 :(得分:0)
$check = Get-WinEvent ... *>$null
您的redirection正在取消所有输出,因此$check
始终的值为$null
,即{{3}在布尔操作中。
您想要使用的是interpreted as $false
$?
,以检查最后一次PowerShell操作是否成功。
if ($?) {
Write-Host "OK: Azure Backup was successful on $currentdate"
exit 0
} else {
Write-Host "Critical: Problem with Azure Backup - $currentdate"
exit 2
}