Dies ist eine wirklich einfache Frage, die mich zieht meine Haare aus.Powershell false negative innerhalb Register-ObjectEvent
Ich habe eine if-Anweisung, die innerhalb des Aktionsblock eines Register-Object zu arbeiten weigert:
Der ganze Block sieht wie folgt aus:
$isCreated = Register-ObjectEvent $Watcher Created -SourceIdentifier CamAction -Action{
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
$AreWeHome = gci $HomeStatus -Recurse | sort LastWriteTime -desc | select -First 1
if ($AreWeHome -eq 'away'){
Write-Host "MOTION DETECTED: '$CamFolder\$name' was $changeType at $timeStamp"
}else{
Write-Host "False Alarm:" $AreWeHome
}
}
Blick auf die if Anweisung:
if ($AreWeHome -eq 'away')
Nun, wenn diese Aussage falsch ist, wird es ausgeführt:
Write-Host "False Alarm:" $AreWeHome
Wenn ich das Powershell-Skript ausführen, ich erhalte diese Ausgabe:
False Alarm: away
So .. $ AreWeHome tut tatsächlich enthalten ‚weg‘, die, wenn die Bedingungen nur sehen es nicht auf diese Weise .
Was zum Teufel ist das Voodoo?
''weg' -eq $ AreWeHome' oder' $ AreWeHome.Name -eq 'weg'' –
Wow. Vielen Dank. Ich wusste, dass es etwas Grundlegendes sein würde. Das hat es behoben! – eko