Windows 7의 특정 이벤트를 기다리는 스크립트를 powershell에 작성했습니다. 보안 로그에 이벤트 ID 4776이 있습니다. 컴퓨터가 잠길 때 스크립트가 실행됩니다.Powershell에서 특정 이벤트를 기다리는 중
스크립트는 유휴 상태, 본질적으로 while (true) 루프에서 실행되어야하며 이벤트의 "실패한 감사"가 발생할 때까지 대기합니다. 이벤트가 발생하면 카운터에 이벤트가 추가됩니다. "Success Audit"상태에서 이벤트가 발생하면 루프에서 빠져 나와 스크립트로 완료됩니다.
내 초기 아이디어는 이벤트의 날짜를 가지고 실행 시간의 날짜 비교하는 그것은, 다음 등
내가 지금까지이 일치하는 경우 :
$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
}
}
I을 그냥 예약 된 작업을 만들어서 끝낼 수는 있지만 실제로는 독립 실행 형이어야한다고 생각합니다. 이 스크립트는 컴퓨터가 잠기면 실행되고 컴퓨터가 잠금 해제되면 실행을 중지합니다.
Windows XP에서는 스크립트가 이벤트가 발생하기를 기다렸다가 일종의 명령을 실행하는 방법이있었습니다.이 스크립트는 eventtriggers.exe라고하며, Vista가 나왔을 때 제거되었습니다. 예약 된 작업이이를 대체했지만 예약 된 작업은 powershell 스크립트를 통해 동일한 방식으로 작동하지 않습니다.
어쨌든 내가하고있는 것 외에 다른 방법을 사용하고 있습니까? eventtriggers.exe를 다시 가져 오거나 최소한 비슷한 것을 가져올 방법이 있습니까? 내 유일한 희망 인 StackOverflow의 사람들을 도와주세요.
컴퓨터가 잠길 때 스크립트가 실행되도록 예약하거나 다른 스크립트를 예약 할 수 있습니다. 그게 "독립형"으로 간주 될까요? 최소한 예약 된 작업을 구성하지 않아도됩니다. 'while (true)'루프에서 지금하고있는 방식은 많은 낭비되는 사이클을 의미합니다. –
그게 사실이야. 그러나 지금까지이 스크립트의 주요 관심사는 이벤트 자체입니다. 실시간으로 이벤트를 확인하려면 어떻게합니까? 컴퓨터를 잠근 다음 잘못된 암호를 입력하면 스크립트가 그에 응답해야합니다. 하지만 내 관심사는 방법이다. 그래서 나는 시간 대 사건의 시간을 사용하여 그것을하려고 노력했다. – ShadowM82