Powershell Windows 로그 조회 방법
기본 적 인 방법 은 get-winevent 입 니 다.이벤트 id 를 지정 하여 목록 을 가 져 올 수 있 습 니 다.이 이벤트 의 구체 적 인 내용 을 가 져 오 려 면 이벤트 의 xml 내용 에 따라 달라 져 야 합 니 다.
예 를 들 면
$Events = Get-WinEvent -ComputerName syddc01 -FilterHashtable @{Logname='Security';Id=4771} -MaxEvents 1
$eventXML = [xml]$Event.ToXml()
$eventxml.event.event.data
이 사고방식 에 따 르 면,나 는 최신 4771 개의 이벤트 로 그 를 20 개 얻 고 결 과 를 출력 하고 싶다
$Events = Get-WinEvent -ComputerName syddc01 -FilterHashtable @{Logname='Security';Id=4771} -MaxEvents 20
# Parse out the event message data
ForEach ($Event in $Events) {
# Convert the event to XML
$eventXML = [xml]$Event.ToXml()
# Iterate through each one of the XML message properties
For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++) {
# Append these as object properties
Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name $eventXML.Event.EventData.Data[$i].name -Value $eventXML.Event.EventData.Data[$i].'#text'
}
}
$events | select Message, TargetUserName, ipaddress,timecreated | Out-GridView
어떤 때 는 사건 의 수가 매우 많 기 때문에 나 는 이 시간 에 대해 제한 을 하고 싶다.절대 where-object 방식 으로 걸 러 내지 마 세 요.그렇지 않 으 면 땅 이 늙 고 하늘 이 황폐 해 질 때 까지 기다 리 는 것 도 반드시 결과 가 나 오 는 것 은 아 닙 니 다.
우 리 는 해시 표를 통 해 여과 해 야 한다.
$endtime=get-date
$starttime=$endtime.addminutes(-1)
$eventcritea = @{logname='security';id=4740;starttime=$starttime;endtime=$endtime}
또 다른 일반적인 방법 은 xmlfilter 를 통 해 로 그 를 걸 러 내 는 것 이다.우선,이벤트 뷰 어 를 통 해 xpath 를 정의 할 수 있 습 니 다.
다른 사건 이기 때문에 그의 eventdata 결 과 는 다 르 기 때문에 나 는 약간의 변 화 를 했다.
[xml]$xmlFilter = @"
<QueryList>
<Query Id="0" Path="Application">
<Select Path="Application">*[System[(EventID=1002) and TimeCreated[timediff(@SystemTime) <= 604800000]]]</Select>
</Query>
</QueryList>
“@
#Get-WinEvent -ComputerName $DC.DC -LogName Security -FilterXPath "*[System[(EventID=529 or EventID=644 or EventID=675 or EventID=676 or EventID=681 or EventID=4625) and TimeCreated[timediff(@SystemTime) <= 86400000]]]" #-MaxEvents 50
$Events = Get-WinEvent -ComputerName syddc01 -FilterXML $xmlFilter
ForEach ($Event in $Events) {
# Convert the event to XML
$eventXML = [xml]$Event.ToXml()
# Iterate through each one of the XML message properties
For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++) {
# Append these as object properties
Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name "App" -Value $eventXML.Event.EventData.Data[5]
}
}
$Events | select Message, App, providerName, timecreated | Out-GridView
결 과 는 다음 과 같다.마지막 으로 예 를 들 어 저 는 lockout 사용자 의 정보 와 그들 이 어디에서 잠 겨 있 는 지 알 고 싶 습 니 다.이 로 그 는 4771 이나 4740 을 살 펴 보 겠 습 니 다.4771 의 로그 가 너무 많 고 조회 가 너무 느 려 서 여기 서 나 는 이미 4740 을 예 로 들 었 다.
eventcritea = @{logname='security';id=4740}
$Events =get-winevent -ComputerName (Get-ADDomain).pdcemulator -FilterHashtable $eventcritea
#$Events = Get-WinEvent -ComputerName syddc01 -Filterxml $xmlfilter
# Parse out the event message data
ForEach ($Event in $Events) {
# Convert the event to XML
$eventXML = [xml]$Event.ToXml()
# Iterate through each one of the XML message properties
For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++) {
# Append these as object properties
Add-Member -InputObject $Event -MemberType NoteProperty -Force -Name $eventXML.Event.EventData.Data[$i].name -Value $eventXML.Event.EventData.Data[$i].'#text'
}
}
$events | select TargetUserName,timecreated, targetdomainname | Out-GridView -Title LockOutStatus
break;
Search-ADAccount -LockedOut | ForEach-Object {Unlock-ADAccount -Identity $_.distinguishedname }
마파두부
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[WinIoT/라즈파이] VS2019로 만든 UWP의 sln을 라즈파이 3+WinIoTCore로 원격 디버깅을 할 수 없을 때의 대처2021년 1월 시점에서 라즈파이 3에 WindowsIoTCore를 넣고 VisualStudio2019에서 UWP 앱을 새로 만들고 디버깅하려고 했는데 잘 디버깅할 수 없었다. 구체적으로는, 「리모트 디버거에 접속할...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.