2014-04-25 8 views
5

Sto utilizzando Powershell 4 e sto tentando di analizzare un registro eventi archiviato in un file csv che include tutti i dati e ha intestazioni associate. Il più vicino che ho potuto venire è quello di utilizzare il seguente comando:Powershell parse get-winevent in csv con intestazioni inclusi tutti gli oggetti figlio

Get-WinEvent -Path .\Security.evtx |Select-Object TimeCreated, ProviderName, Id, Message, Level, Keyword, UserID, Data, Subject, SubjectUserSid, SubjectUserName, SubjectLogonId, ComputerName | Export-Csv .\Logging.csv 

Questo mi dà tutte le informazioni di intestazione per tutti i campi nel file CSV, ma gli unici campi che contengono i dati sono TimeCreated, ProviderName, ID, Level, & Messaggio. Sto cercando di ottenere i dati mancanti anche nelle colonne ma non ci riescono. Quindi cosa sto facendo di sbagliato qui?

+0

È bello vedere che hai trovato una soluzione. Potresti copiarlo in una risposta per la tua stessa domanda e contrassegnare come risposta accettata; in questo modo questa domanda verrà contrassegnata come risolta. Grazie in anticipo. – JohnLBevan

+0

avrei assunto '| Select-Object -Property * 'avrebbe fatto il trucco –

+0

' | Oggetto Select-Object -Property * 'non lo farebbe perché potreste anche reindirizzare gli oggetti in questione (che contengono proprietà con più righe inclusi i caratteri della nuova riga come' Ritorno carrello 'e 'Avanzamento riga') su un altro oggetto che * fa * supporto campi di righe multiple (si pensi ai cmdlet come '| Out-GridView',' | ConvertTo-JSON' o quasi a qualsiasi altra funzione o cmdlet). ** I file CSV ** non supportano i campi a più righe a causa del loro formato di testo normale. – iRon

risposta

1

Questo è stato copiato da una modifica alla domanda stessa, e dovrebbero essere accreditati alla domanda autore originale

Ok, ho finalmente capito che fuori ... Almeno per quello che ho bisogno di realizzare. Speriamo che questo possa aiutare qualcuno.

Get-WinEvent -Path .\Security.evtx | select TimeCreated, ProviderName, Id, @{n='Message';e={$_.Message -replace '\s+', " "}} | Export-Csv .\Logging.csv 

Questo codice permette di esportare il registro eventi archiviato in csv con le intestazioni e mette tutto il corpo del messaggio in una cella, che consente l'importazione in un database con facilità quando non si hanno gli strumenti con cui lavorare.

+0

@glennsl: Non sto cercando i crediti ma voglio semplicemente far avanzare la domanda aperta e portarla fuori dall'elenco 'Senza risposta 'come richiesto da [JohnLBevan] (https://stackoverflow.com/users/361842/johnlbevan) 4 mesi fa. Immagino che non ci sia modo di cambiare il proprietario della risposta a [@ user3571026] (https://stackoverflow.com/users/3571026/user3571026) o magari a una specie di account anonimo che accetta voti. Significa che se il proprietario non reagisce la domanda rimarrà senza risposta per sempre, o no? – iRon

+0

Penso che tu possa contrassegnare la risposta come wiki della comunità in qualche modo, o in alternativa contrassegnarla per l'attenzione del moderatore per convincerli a farlo. Non intendevo insinuare che qualcosa dovesse essere portato via da te, tuttavia volevo solo sottolineare che l '"io" qui si riferisce all'OP, non a te (che sarebbe ugualmente valido se la risposta è trasformata in un wiki della comunità) – glennsl

Problemi correlati