2014-04-25 4 views
5

J'utilise Powershell 4 et j'essaie d'analyser un journal d'événements archivés dans un fichier csv qui contient toutes les données et qui contient des en-têtes associés. Le plus proche que je suis en mesure de venir est en utilisant la commande suivante:Powershell analyse get-winevent dans csv avec en-têtes y compris tous les objets enfants

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

Cela me donne toutes les informations d'en-tête pour tous les champs dans le fichier csv, mais les seuls champs qui contiennent des données sont TimeCreated, ProviderName, ID, Level, & Message. J'essaie d'obtenir aussi les données manquantes dans les colonnes mais ne réussissant pas. Alors qu'est-ce que je fais mal ici?

+0

Content de vous voir trouvé une solution. Pourriez-vous copier cela à une réponse pour votre propre question et marquer comme la réponse acceptée; De cette façon, cette question sera signalée comme résolue. Merci d'avance. – JohnLBevan

+0

J'aurais supposé '' | Select-Object -Property * 'aurait fait l'affaire –

+0

' | L'objet Select-Object -Property * 'ne le ferait pas car vous pourriez également rediriger les objets concernés (qui contiennent des propriétés avec plusieurs lignes, y compris les nouveaux caractères de ligne comme' Carriage Return' et 'Line Feed') vers un autre objet supportant * plusieurs champs de ligne (pensez aux cmdlets comme '| Out-GridView',' | ConvertTo-JSON' ou presque n'importe quelle autre fonction ou cmdlet). ** Les fichiers CSV ** ne prennent pas en charge les champs multilignes en raison de leur format de texte brut. – iRon

Répondre

1

Cela a été copié à partir d'une édition à la question elle-même, et doit être créditée à l'auteur

Ok, je fini par comprendre ... question initiale Au moins pour ce que je dois accomplir. Espérons que cela aidera quelqu'un.

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

Ce code vous permet d'exporter le journal des événements archivés dans csv avec les en-têtes et met tout le corps de message dans une cellule, ce qui permet l'importation dans une base de données facilement quand vous avez pas d'outils pour travailler.

+0

@glennsl: Je ne cherche pas les crédits mais je veux simplement avancer la question ouverte et la sortir de la liste 'Non répondu 'comme demandé par [JohnLBevan] (https://stackoverflow.com/users/361842/johnlbevan) Il y a 4 mois Je suppose qu'il n'y a aucun moyen de changer le propriétaire de la réponse à [@ user3571026] (https://stackoverflow.com/users/3571026/user3571026) ou peut-être à un type de compte anonyme qui accepte les votes. Cela signifie que si le propriétaire ne réagit pas, la question restera sans réponse pour toujours, ou non? – iRon

+0

Je pense que vous pouvez d'une manière ou d'une autre marquer la réponse en tant que wiki de communauté, ou bien la signaler à l'attention du modérateur pour l'amener à le faire. Je ne voulais pas laisser entendre que quelque chose devrait vous être enlevé, mais je voulais simplement souligner que le «je» se réfère ici à l'OP, pas à vous (ce qui serait tout aussi valable si la réponse est transformée en un wiki communautaire) – glennsl

Questions connexes