2010-12-08 48 views
2

我試圖讓此PS腳本從多臺計算機上獲取安全日誌,並且只搜索4624的事件ID,並且只顯示包含「Logon Type:2 「或交互式登錄。除了僅獲取僅用於交互式登錄的日誌部分外,我還有其他所有工作。這裏是我的腳本的剪輯,如果任何人有任何想法如何得到這個去它將不勝感激。如果我從「登錄類型」中取出2,它就會起作用,並且我得到了所有的東西,但是如果我之後有任何東西,它不會踢任何錯誤,但它也不會產生結果。是的,我已驗證過我的篩選時間範圍內有交互式登錄事件。謝謝。Get-WinEvent僅獲取交互式登錄消息

$ server; Get-WinEvent -computername $ server -FilterHashTable @ {Logname = $ logname; ID = $ eventid; StartTime = $ starttime; EndTime = $ endtime}其中{$ _。Message |選擇字符串「登錄類型:2」}

回答

1

僅供參考的情況下,任何人都曾經試圖做同樣的事情,它一直在尋找後多餘的空格「登錄類型:」它想它看起來像它在日誌iteself中,「登錄類型:2」我不知道如何在PowerShell中解決這個問題,但是這樣做對我來說是個訣竅。

+1

它沒有通過上面來,這似乎是與四個選項卡「登錄類型:」和2 – 2010-12-09 17:39:33

1

我從事這個問題的幾種方法。我認爲它們可能很有用,因爲識別登錄類型非常重要。 -RMF

Get-WinEvent -max 1000 |其中{$ _。Message | findstr/C:「登錄類型」} |選擇消息| fl * | FINDSTR/C: 「登錄類型」

登錄類型:5 登錄類型:7 ...

GET-WinEvent安全-MAX 1000 |選擇ID,級別,消息|其中{$ _。Message | findstr/C:「登錄類型」} | ft -auto -wrap |更

標識級別消息


4624 0帳戶已成功登錄。

 Subject: 
      Security ID:  (deleted) 
      Account Name:  (deleted) 
      Account Domain:  (deleted) 
      Logon ID:  0x3e7 

     Logon Type:   5 

....

GET-WinEvent -max 10 -FilterHashtable @ {日誌名= '安全'; ID = 4624} |選擇TimeCreated,MachineName,Message | ft -auto -wrap |更多

TimeCreated MachineName Message ----------- ----------- ------- 6/29/2011 12:36:35 PM(已刪除)帳戶已成功登錄。

       Subject: 
            Security ID:  (deleted) 
            Account Name:  (deleted) 
            Account Domain:  (deleted) 
            Logon ID:  0x3e7 

           Logon Type:   5 

...

GET-WinEvent -max 10 -FilterHashtable @ {日誌名= '安全',ID = 4624} |選擇TimeCreated,MachineName,Message |選擇字符串「登錄類型」|更多

@ {TimeCreated = 06/29/2011 12:36:35;計算機名=(刪除);消息=帳戶已成功登錄。

Subject: 
            Security ID:  (deleted) 
            Account Name:  (deleted) 
            Account Domain:  (deleted) 
            Logon ID:  0x3e7 

           Logon Type:   5 

...

這最後一種方法選擇挖掘出來的信息每登錄事件的消息,增加了TimeCreated場,並給出像一個數據庫格式在所有登錄嘗試(ID = 4624)安全日誌。結果被附加到csv。

$ LogonTypes = GET-WinEvent -FilterHashtable @ {日誌名= '安全',ID = 4624}

的foreach(在$ $ $ LogonTypes項目){($項目|選擇TimeCreated,留言| fl * | findstr /G:search.lst)-replace「」,「」-join「,」|出文件-append test3.csv}

其中(柱狀)search.lst:

TimeCreated 安全ID: 帳戶名稱: 帳戶域: 登錄ID: 登錄類型: 登錄GUID : 進程名稱:

2

EventRecord.properties在列表中有登錄類型。爲了篩選出交互式登錄類型的成功登錄事件今天:

Get-winevent -FilterHashtable @{logname='security'; id=4624; starttime=(get-date).date} | where {$_.properties[8].value -eq 2} 
1

解決如何分號,在這篇文章的頂部的第一個代碼示例2號之間的空格匹配的問題是使用像這樣寫的PowerShell正則表達式模式\s+

模式字符區分大小寫,通常與「-match」運算符一起使用,但可以有效地使用在海報原始查詢中寫入的Select-String命令行開關。修改後的代碼應該是這樣的:

Get-WinEvent -FilterHashTable @{LogName="Security";ID=4624} | where { $_.Message | Select-String "Logon Type:\s+2"} 

此外,如果PowerShell腳本需要查詢仍然使用傳統的事件日誌舊版的操作系統,該Get-EventLog命令行可以用相同的圖案同樣採用如下所示:

Get-EventLog -LogName Security -InstanceID 4624 | Where {$_.Message -match "Logon Type:\s+2"} 

PowerShell中的正則表達式的參考資料:

https://technet.microsoft.com/en-us/magazine/2007.11.powershell.aspx https://www.petri.com/powershell-string-parsing-with-regular-expressions

注意:此答案中引用的正則表達式模式由Microsoft描述爲「character class」

克拉克Froebe