2016-03-24 30 views
2

我想從get-winevent cmdlet的消息輸出中提取特定的行,但無法找到一種方法來執行此操作(我可能會不正確的搜索,但仍然學習更高級的腳本方法)。我所運行的是這樣的:在PowerShell中從Get-Winevent消息中選擇特定的行/數據

Get-WinEvent -ComputerName $DC -FilterHashtable @{Logname='Security';Keywords='9007199254740992';Data=$userid} -MaxEvents 1 | Select Message | Format-List 

這將類同此消息(改變了一些信息,以通用信息)返回:

Message : The computer attempted to validate the credentials for an account. 
Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 
Logon Account: jdoe 
Source Workstation: Generic-Computername 
Error Code: 0x0 

我試圖創建一個簡單的方法來找到計算機上的人最後登錄了更快的故障排除,但我無法僅過濾出源工作站行,我可能只是沒有正確的語法來進行搜索以找到正在查找的結果,但我一直在搜索大約一週現在,並沒有發現任何接近我所尋找的東西,任何幫助將是偉大的!

+0

你能提供分配給''Data' $ userid'(複製)的例子嗎?另外,你能澄清你想達到什麼嗎? –

+0

當然,$ userid是jdoe的一些東西,只是在事件日誌的數據字段中的一個用戶名,它允許我用特定的用戶名拉取日誌,我嘗試使用正則表達式,就像你在答案和這個工作!至於我想要完成的任務,我想要一個簡單的方法來查看某人最後登錄的計算機,以便我知道我想要遠程訪問並幫助用戶的計算機,如果您知道更簡單或更好的方法洗耳恭聽 :) –

回答

1

林不知道你想要檢索什麼信息,但我很確定有一個更好的方法,然後使用Get-WinEvent來獲取該信息。但是,如果你只是想獲得的Source Workstation值,你可以做到這一點與正則表達式:

$event = Get-WinEvent ` 
    -ComputerName $DC ` 
    -FilterHashtable @{Logname='Security';Keywords='9007199254740992';Data=$userid} ` 
    -MaxEvents 1 ` 
    | Select -expand Message 

[regex]::Match($event, 'Source Workstation:\s*(.*)\s*').Groups[1].Value 
相關問題