2016-07-11 19 views
1

Ich bin nur eine einfache, ich bin neu in Powershell. Versuchen Sie, die unten stehende Anweisung zu erhalten.Skript für Azure Backup-Benachrichtigungen

$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 
} 

Speziell if ($check -eq $true) scheint nicht zu tun, was erwartet wird. Da $check im Ereignisprotokoll nach Ereignis-ID 3 sucht, sollte es, falls es dort ist, "true" zurückgeben, wenn es nicht "false" ist. Leider wird es jedes Mal nur falsch zurückgegeben.

Könnte jemand bitte beraten? Gibt es einen besseren Weg, das zu tun?

Antwort

0
$check = Get-WinEvent ... *>$null 

Ihre redirection unterdrückt alle Ausgang, so $checkimmer hat den Wert $null, die interpreted as $false in einem boolean Betrieb ist.

Was Sie verwenden möchten, ist die automatic variable$?, um es zu überprüfen, wenn der letzte PowerShell-Vorgang erfolgreich war.

if ($?) { 
    Write-Host "OK: Azure Backup was successful on $currentdate" 
    exit 0 
} else { 
    Write-Host "Critical: Problem with Azure Backup - $currentdate" 
    exit 2 
} 
+0

Vielen Dank! Es wirkt jetzt wie ein Zauber. – ArturG