2013-12-17 3 views
0

특정 문자열에 대해 서버의 이벤트 로그를 검색하는 명령을 포맷하려하지만 중요 로그, 경고 로그 및 오류 로그 항목을 검색하려고합니다. if 문없이 Powershell에서 OR을 사용합니까?

지금, 나는 단지 그 같은 예를 들어, 하나 개의 오류 유형 또는 다른 사람을 검색하는 방법을 알고이 아래

Get-EventLog -LogName Application -EntryType Error -Message *STRING* -Newest 5 | 
Format-List 

작동하지 않습니다하지만 난 어떤 라인을 따라입니다

Get-EventLog -LogName Application | 
Where {$_.EntryType Error -or $_.EntryType Warning -or $_.EntryType Crital} -and -Message *STRING* -Newest 5 | 
Format-List 

이 작동하지 않고 내가이 명령을 포맷 할 방법을 아주 확실하지 않다 파워 쉘에서 매우 숙달되지 않는 : 일을하려고. 다른 OR 문 IF의 사용 예를 발견했지만 필자의 경우 IF 문이 필요한 이유는 알 수 없습니다.

답변

2

구문 오류가 여러 개 있습니다.

Get-EventLog -LogName Application | ? {$_.EntryType -eq "Error" -or $_.EntryType -q "Warning" -or $_.EntryType -eq "Crital" } | select -First 5 | fl 

변경된 사항 대부분 밑줄 및 평가 연산자가 누락되었습니다 (예 : $.EntryType Error ->$_.EntryType -eq "Error"). 또한 -Newest 5을 사용하면 필터와 일치하는지 여부와 상관없이 이벤트 로그에서 상위 5 개 항목 만 읽습니다. select -First 5을 사용하여 5 개의 첫 번째 경기가 선택됩니다. 당신이 메시지 문자열 필터링 등과 같이 몇 가지 괄호를 추가,

Get-EventLog -LogName Application | ? { ($_.EntryType -eq "Error" -or $_.EntryType -q "Warning" -or $_.EntryType -eq "Crital") -and $_.Message -like "SEARCHTERM" | select -First 5 | fl 
2

당신은 할 필요가 없습니다 (그리고해야되지 않음)하려면

이를 필터링 할 where-object를 사용합니다. EntryType 매개 변수가 Get-EventLog이면 배열 값을 가지므로 해당 항목에 여러 항목 유형을 전달하고 필터링을 수행 할 수 있습니다. 가능하면 소스에 가깝게 필터링하십시오. 성능상의 이유로 (특히 네트워크 연결을 통해) 메모리는 &입니다.

Get-EventLog -LogName Application -EntryType Error,Critical,Warning -Message *STRING* -erroraction silentlycontinue -Newest 5 | Format-List 

나는 하나 개 이상의 유형의 항목이 없으면이 오류가 발생되므로 -erroraction silentlycontinue를 추가했다. try/catch을 사용하여 오류를 캡처 할 수도 있습니다.

+0

감사합니다. 나도 틀렸어. 중요한 유형이나 오류 (명령을 실행하는 데 오류가 있음)가 없으므로 마지막 명령이 잘 작동합니다. Get-EventLog -LogName 응용 프로그램 - 유형 유형 오류, 경고 메시지 * 문자열 * erroraction silentlycontinue -Newest 5 | 형식리스트 – vnat

관련 문제