2014-04-25 6 views
5

Używam Powershell 4 i próbuję parsować zarchiwizowany dziennik zdarzeń do pliku csv, który zawiera wszystkie dane i ma powiązane z nimi nagłówki. Najbliżej byłem w stanie się to za pomocą następującego polecenia:Powershell parse get-winevent do csv z nagłówkami zawierającymi wszystkie obiekty potomne

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

To daje mi wszystkie informacje nagłówka dla wszystkich pól w pliku csv ale jedyne pól zawierających dane są TimeCreated, ProviderName, ID, poziom, & Wiadomość. Próbuję uzyskać brakujące dane w kolumnach również, ale nie powiodło się. Co ja tu robię źle?

+0

Miło widzieć, że znalazłeś rozwiązanie. Czy możesz skopiować to do odpowiedzi na własne pytanie i zaznaczyć jako zaakceptowaną odpowiedź; w ten sposób to pytanie zostanie oznaczone jako rozwiązane. Z góry dziękuję. – JohnLBevan

+0

Przyjąłbym '| Select-Object -Property * 'zrobiłby sztuczkę –

+0

' | Select-Object -Property * 'obiekt nie zrobiłby tego, ponieważ możesz również potokować dane obiekty (które zawierają właściwości z wieloma liniami, w tym znaki nowego wiersza jako' Powrót karetki' i 'Podawanie linii') do innego obiektu, który * nie * obsługuje wiele pól liniowych (myśl o cmdletach takich jak '| Out-GridView',' | ConvertTo-JSON' lub prawie każda inna funkcja lub cmdlet). ** Pliki CSV ** po prostu nie obsługują pól wielowierszowych z powodu ich formatu zwykłego tekstu. – iRon

Odpowiedz

1

ten został skopiowany z edycji do samej kwestii i powinna być zapisana do oryginalnego zapytania autora

Ok, ale w końcu zorientowaliśmy się ... Przynajmniej na to, co trzeba wykonać. Mam nadzieję, że to pomoże komuś.

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

Kod ten pozwala na eksport zarchiwizowany dziennik wydarzeń do CSV z nagłówkami i stawia całą treść wiadomości do jednej komórki, która umożliwia import do bazy danych bez problemów, gdy nie masz narzędzia do pracy.

+0

@glennsl: Nie szukam kredytów, ale chcę tylko rozwinąć otwarte pytanie i wyciągnąć je z listy "Nieodebrane", zgodnie z prośbą [JohnLBevan] (https://stackoverflow.com/users/361842/johnlbevan) 4 miesiące temu. Domyślam się, że nie ma sposobu na zmianę właściciela odpowiedzi na [@ user3571026] (https://stackoverflow.com/users/3571026/user3571026) lub na rodzaj anonimowego konta, które akceptuje głosy. Oznacza to, że jeśli właściciel nie zareaguje, pytanie pozostanie bez odpowiedzi na zawsze, czy nie? – iRon

+0

Myślę, że możesz w jakiś sposób oznaczyć odpowiedź jako wiki społeczności lub, zamiast tego, oznaczyć ją jako moderatora, aby to zrobić. Nie chciałem sugerować, że cokolwiek powinno się wam zabrać, chciałem tylko zwrócić uwagę, że "ja" odnosi się tutaj do PO, a nie do was (co byłoby równie ważne, gdyby odpowiedź została przekształcona w społeczność wiki) – glennsl

Powiązane problemy