我正在使用PowerShell編寫腳本,它將等待Windows 7中的特定事件。 安全日誌中的事件ID 4776。該腳本將在計算機被鎖定時運行。等待PowerShell中的特定事件
該腳本應該運行在空閒狀態,基本上是一個while(true)循環,並且它將等待事件發生的「失敗審計」。一旦事件發生,它將添加一個計數器。一旦事件在「成功審計」狀態下發生,它將從循環中斷開,並由腳本完成。
我最初的想法,就是把事件的日期,並比較運行時間的日期,如果它匹配,然後等
我到目前爲止有:
$i=0
while(true){
$date = Get-Date -format G
$eventtime_fail=Get-EventLog Security | ? {$_.EventId -eq 4776} | where {$_.entrytype -eq "FailureAudit"} | Select-Object -expand TimeGenerated | Select -first 1
$eventtime_success=Get-EventLog Security | ? {$_.EventId -eq 4776} | where {$_.entrytype -eq "SuccessAudit"} | Select-Object -expand TimeGenerated | Select -first 1
if($date -eq $eventtime_fail){
$i++
}
else if($date -eq $eventtime_success){
break
}
}
我意識到我可以簡單地創建一個計劃任務,並完成它,但我真的需要這是獨立的。該腳本將在計算機鎖定後運行,並在計算機解鎖後停止執行。
在Windows XP中,腳本有一種等待事件發生的方法,然後運行某種指令,這就是我需要的,這叫做eventtriggers.exe,它在Vista出現時被移除並計劃任務取代它,但是,計劃的任務不能通過PowerShell腳本以相同的方式工作。
有沒有辦法做到這一點,而不是我的做法呢?有沒有辦法讓eventtriggers.exe回來,或者至少有這樣的事情?幫助我的人StackOverflow,你我唯一的希望。
您的腳本可以安排自己(或安排其他腳本)在計算機鎖定時運行。這會算作「獨立」嗎?至少這不涉及你必須去配置一個計劃任務。現在你在做一個'while(true)'循環的方式,意味着很多浪費的循環。 –
這是真的。但是我的主要關注點是這個劇本本身。我如何實時檢查事件。如果我鎖定了電腦,那麼可以說輸入一個錯誤的密碼,腳本應該對此作出響應。但我的擔心是如何。這就是爲什麼我試圖用時間和事件時間來做到這一點。 – ShadowM82