Экспорт соответствия Powershell-csv с форматом, отображаемым в Windows Powershell ISE

#windows #powershell #powershell-4.0

#Windows #powershell #powershell-4.0

Вопрос:

У меня есть скрипт, который экспортирует события из журнала событий, например:

 Get-EventLog -LogName Application | Where-Object Source -Match "my application"  | export-csv "$FileDate.csv"
 

Когда я открываю CSV, он тоже выглядит не так, как я хочу. Он показывает

EventID,»MachineName»,»Data»,»Index»,»Category»,»CategoryNumber»,»EntryType»,»Message»,»Source»,»ReplacementStrings»,»InstanceId»,»TimeGenerated»,»TimeWritten»,»UserName»,»Site»,»Container» 0, «РАБОЧИЙ СТОЛ-ID94AN3», «Система.Байт[]»,»21425″,»(0)»,»0″,» Ошибка»,»Завершено выполнение проекта «Testproject» Выполнение пакета «Сбой» Сбой выполнения Время начала: 21/12/2020 19:47:52 Время окончания: 21/12/2020 19:47:56 на сервере: РАБОЧИЙ СТОЛ-ID94AN3 -Logmessage

После преобразования текста в столбцы:

введите описание изображения здесь

С информацией в столбцах, где ее не должно быть. Кажется, что он объединяет 2 окна из средства просмотра событий. «Верхнее» окно с ошибками и «нижнее» окно с подробностями. Все, что мне нужно, это верхнее окно.

Если я запущу этот код в Windows Powershell ISE:

 Get-EventLog -LogName Application | Where-Object Source -Match "Myapplication"
 

Это выглядит так, как я хочу, чтобы это тоже выглядело (после использования текста в столбцах):

    Index Time          EntryType   Source                 InstanceID Message                                                                                                                                                                                                                                 
   ----- ----          ---------   ------                 ---------- -------                                                                                                                                                                                                                                 
   21425 Dec 21 19:47  Error       Myapplication LogEn...            0 Message 1                                                                                                                                                                 
   21424 Dec 21 19:47  Information Myapplicationr LogEn...            0 Message 2
 

Как мне сделать так, чтобы мой экспорт CSV также выглядел так?

Комментарии:

1. то, что вы показываете, НЕ является форматом csv… это система отображения powershell, отображающая коллекцию объектов, полученных в результате импорта CSV. фактический файл — это просто текст, разделенный символом-разделителем.

2. Отредактировано для уточнения.

3. вы говорите It looks how I want it too look: и показываете, что powershell показывает после импорта CSV … но это не CSV — это массив powershell, созданный путем импорта CSV. ///// вы НЕ МОЖЕТЕ создать CSV, который выглядит так… это не будет CSV! [ усмешка ] это будет только обычный текстовый файл с почти нулевой структурой.

4. Хорошо, перефразируя, я хочу, чтобы это выглядело так после того, как я использую преобразование текста в столбцы в моем CSV. И это не так. Все, что указано в разделе «Сбой выполнения» (см. Скриншот), не должно находиться в том же столбце, что и EventID.

5. кул! теперь, ПОЖАЛУЙСТА, измените свой вопрос, чтобы указать, что вы на самом деле хотите. по-прежнему требуется, чтобы файл CSV выглядел как обычный текстовый отчет.

Ответ №1:

Вы можете придать ему желаемый вид, выбрав только те столбцы, которые вам нужны, перед отправкой результатов Export-CSV .

 Get-EventLog -LogName Application | Where-Object Source -Match "edgeupdate" | 
    Select -first 10 -Property Index, Time, EntryType, Source, InstanceId, Message | 
      Export-Csv -NoTypeInformation
 

введите описание изображения здесь

Комментарии:

1. Это работает, за исключением сообщения. Кажется, он помещает его в первый столбец, как показано на моем скриншоте.

2. @Elmer Попробуйте это с -UseCulture помощью переключателя, добавленного к Export-Csv командлету. У меня такое чувство, что ваш Excel использует другой символ-разделитель, чем запятая по умолчанию.

3. Много ли в вашем приложении символов-запятых в поле сообщения? Возможно, это связано

4. @Elmer вы дважды щелкнули файл или импортировали его в Excel, а затем сделали text-to-columns ? сообщение, вероятно, представляет собой многострочную строку. text-to-columns вероятно, происходит сбой при просмотре новых строк. Просто дважды щелкните, но используйте -UseCulture в противном случае excel помещает все это в столбец 1

5. @Elmer Если вы экспортируете, используя символ-разделитель, который ожидает Excel (путем добавления `-UseCulture»), вам не нужно выполнять Text-To_Columns. Это та часть, которая портит ваш лист Excel.