- Создание запросов Get-WinEvent с помощью FilterHashtable Creating Get-WinEvent queries with FilterHashtable
- Записи блога, посвященные перечислению Blog posts about enumeration
- Пары «ключ — значение» в хэш-таблице Hash table key-value pairs
- Создание запроса с использованием хэш-таблицы Building a query with a hash table
- Использование перечисляемых значений в хэш-таблице Using enumerated values in a hash table
- Значение статического свойства Keywords (необязательно) Keywords static property value (optional)
- Фильтрация по идентификатору события Filtering by Event Id
- Фильтрация по уровню Filtering by Level
- Статическое свойство уровня в перечислении (необязательно) Level static property in enumeration (optional)
Создание запросов Get-WinEvent с помощью FilterHashtable Creating Get-WinEvent queries with FilterHashtable
Чтобы прочитать исходную запись блога специалистов по сценариям от 3 июня 2014 г., которая называется Use FilterHashTable to Filter Event Log with PowerShell (Использование FilterHashTable для фильтрации журнала событий с помощью PowerShell), перейдите сюда. To read the original June 3, 2014 Scripting Guy blog post, see Use FilterHashTable to Filter Event Log with PowerShell.
Эта статья является выдержкой из исходной записи блога. Здесь показано, как использовать параметр FilterHashtable командлета Get-WinEvent для фильтрации журналов событий. This article is an excerpt of the original blog post and explains how to use the Get-WinEvent cmdlet’s FilterHashtable parameter to filter event logs. Использование командлета Get-WinEvent PowerShell представляет собой эффективный метод для фильтрации журналов событий и журналов диагностики Windows. PowerShell’s Get-WinEvent cmdlet is a powerful method to filter Windows event and diagnostic logs. Если в запросе Get-WinEvent используется параметр FilterHashtable , производительность будет более высокой. Performance improves when a Get-WinEvent query uses the FilterHashtable parameter.
При работе с объемными журналами событий отправка объектов по конвейеру команде Where-Object не является эффективной. When you work with large event logs, it’s not efficient to send objects down the pipeline to a Where-Object command. До выхода версии PowerShell 6 для получения данных журнала также использовался командлет Get-EventLog . Prior to PowerShell 6, the Get-EventLog cmdlet was another option to get log data. Например, приведенные ниже команды являются неэффективными для фильтрации журналов Microsoft-Windows-Defrag : For example, the following commands are inefficient to filter the Microsoft-Windows-Defrag logs:
В следующей команде используется хэш-таблица, что повышает производительность: The following command uses a hash table that improves the performance:
Записи блога, посвященные перечислению Blog posts about enumeration
В этой статье представлены сведения о том, как использовать перечисляемые значения в хэш-таблице. This article presents information about how to use enumerated values in a hash table. Дополнительные сведения о перечислении см. в записях блога специалистов по сценариям . For more information about enumeration, read these Scripting Guy blog posts. Сведения для создания функции, возвращающей перечисляемые значения, см. в этой записи блога. To create a function that returns the enumerated values, see Enumerations and Values. Дополнительные сведения см. в ряде записей блога специалистов по сценариям, посвященных перечислению. For more information, see the Scripting Guy series of blog posts about enumeration.
Пары «ключ — значение» в хэш-таблице Hash table key-value pairs
Для создания эффективных запросов используйте командлет Get-WinEvent с параметром FilterHashtable . To build efficient queries, use the Get-WinEvent cmdlet with the FilterHashtable parameter. FilterHashtable принимает хэш-таблицу в качестве фильтра для получения конкретных сведений из журналов событий Windows. FilterHashtable accepts a hash table as a filter to get specific information from Windows event logs. Хэш-таблица использует пары ключ — значение . A hash table uses key-value pairs. Дополнительные сведения о хэш-таблицах см. здесь. For more information about hash tables, see about_Hash_Tables.
Если пары ключ — значение находятся в одной строке, они должны быть разделены точкой с запятой. If the key-value pairs are on the same line, they must be separated by a semicolon. Если пары ключ — значение находятся в разных строках, точка с запятой не требуется. If each key-value pair is on a separate line, the semicolon isn’t needed. Например, в этой статье пары ключ — значение расположены в разных строках и разделены точкой с запятой. For example, this article places key-value pairs on separate lines and doesn’t use semicolons.
В этом примере используется несколько пар ключ — значение для параметра FilterHashtable . This sample uses several of the FilterHashtable parameter’s key-value pairs. Готовый запрос включает в себя значения LogName , ProviderName , Keywords , ID и Level . The completed query includes LogName , ProviderName , Keywords , ID , and Level .
Допустимые пары ключ — значение показаны в следующей таблице и включены в документацию для параметра FilterHashtable командлета Get-WinEvent. The accepted key-value pairs are shown in the following table and are included in the documentation for the Get-WinEvent FilterHashtable parameter.
В следующей таблице приведены имена ключей, типы данных и сведения о том, принимаются ли подстановочные знаки для значения данных. The following table displays the key names, data types, and whether wildcard characters are accepted for a data value.
Имя ключа Key name | Тип данных значения Value data type | Принимает ли подстановочные знаки? Accepts wildcard characters? |
---|---|---|
LogName LogName | Да Yes | |
ProviderName ProviderName | Да Yes | |
путь Path | нет No | |
Keywords Keywords | нет No | |
ID ID | нет No | |
Level Level | нет No | |
StartTime StartTime | нет No | |
EndTime EndTime | нет No | |
UserID UserID | нет No | |
Данные Data | нет No | |
нет No |
Ключ представляет именованное поле данных событий. The key represents a named event data field. Например, событие Perflib 1008 может содержать следующие данные о событии: For example, the Perflib event 1008 can contain the following event data:
Эти события можно запросить с помощью следующей команды: You can query for these events using the following command:
Возможность создавать запросы была добавлена в PowerShell 6. The ability to query for was added in PowerShell 6.
Создание запроса с использованием хэш-таблицы Building a query with a hash table
Для проверки результатов и устранения проблем полезно создавать по одной паре ключ — значение для хэш-таблицы за раз. To verify results and troubleshoot problems, it helps to build the hash table one key-value pair at a time. Запрос получает данные из журнала Application . The query gets data from the Application log. Хэш-таблица создается в результате запроса Get-WinEvent –LogName Application . The hash table is equivalent to Get-WinEvent –LogName Application .
Для начала создайте запрос Get-WinEvent . To begin, create the Get-WinEvent query. Используйте пару ключ — значение параметра FilterHashtable с ключом LogName и значением Application . Use the FilterHashtable parameter’s key-value pair with the key, LogName , and the value, Application .
Продолжайте выполнять сборку хэш-таблицы с использованием ключа ProviderName . Continue to build the hash table with the ProviderName key. ProviderName — это имя, отображаемое в поле источника в средстве Просмотра событий Windows . The ProviderName is the name that appears in the Source field in the Windows Event Viewer . Например, среда выполнения .NET на следующем снимке экрана: For example, .NET Runtime in the following screenshot:
Обновите хэш-таблицу и добавьте пару ключ-значение с ключом ProviderName и значением .NET Runtime . Update the hash table and include the key-value pair with the key, ProviderName , and the value, .NET Runtime .
Если запрос должен получить данные из архивных журналов событий, используйте ключ Path . If your query needs to get data from archived event logs, use the Path key. Значение Path указывает полный путь к файлу журнала. The Path value specifies the full path to the log file. Дополнительные сведения см. в записи блога специалистов по сценариямUse PowerShell to Parse Saved Event Logs for Errors (Анализ сохраненных журналов событий на наличие ошибок с помощью PowerShell). For more information, see the Scripting Guy blog post, Use PowerShell to Parse Saved Event Logs for Errors.
Использование перечисляемых значений в хэш-таблице Using enumerated values in a hash table
Keywords — следующий ключ в хэш-таблице. Keywords is the next key in the hash table. Тип данных Keywords представляет собой массив типа значения [long] , который содержит большое число. The Keywords data type is an array of the [long] value type that holds a large number. Используйте следующую команду, чтобы найти максимальное значение [long] : Use the following command to find the maximum value of [long] :
Для ключа Keywords PowerShell использует число, а не строку, такую как Security . For the Keywords key, PowerShell uses a number, not a string such as Security . В средстве Просмотр событий Windows значения Keywords отображаются в виде строк, но они являются перечисляемыми значениями. Windows Event Viewer displays the Keywords as strings, but they are enumerated values. Если вы используете ключ Keywords со строковым значением, в хэш-таблице отображается сообщение об ошибке. In the hash table, if you use the Keywords key with a string value, an error message is displayed.
Откройте средство Просмотр событий Windows и в окне Действия щелкните Фильтровать текущий журнал . Open the Windows Event Viewer and from the Actions pane, click on Filter current log . В раскрывающемся меню Ключевые слова отображаются доступные ключевые слова, как показано на следующем снимке экрана: The Keywords drop-down menu displays the available keywords, as shown in the following screenshot:
Используйте следующую команду для отображения имен свойств StandardEventKeywords . Use the following command to display the StandardEventKeywords property names.
Перечисляемые значения описаны в .NET Framework . The enumerated values are documented in the .NET Framework . Дополнительные сведения см. в разделе о команде перечисления StandardEventKeywords. For more information, see StandardEventKeywords Enumeration.
Имена ключевых слов и перечисляемые значения выглядят следующим образом: The Keywords names and enumerated values are as follows:
Имя Name | Значение Value |
---|---|
AuditFailure AuditFailure | 4503599627370496 4503599627370496 |
AuditSuccess AuditSuccess | 9007199254740992 9007199254740992 |
CorrelationHint2 CorrelationHint2 | 18014398509481984 18014398509481984 |
EventLogClassic EventLogClassic | 36028797018963968 36028797018963968 |
Sqm Sqm | 2251799813685248 2251799813685248 |
WdiDiagnostic WdiDiagnostic | 1125899906842624 1125899906842624 |
WdiContext WdiContext | 562949953421312 562949953421312 |
ResponseTime ResponseTime | 281474976710656 281474976710656 |
None None | 0 0 |
Обновите хэш-таблицу и добавьте пару ключ — значение с ключом Keywords и значением перечисления EventLogClassic 36028797018963968 . Update the hash table and include the key-value pair with the key, Keywords , and the EventLogClassic enumeration value, 36028797018963968 .
Значение статического свойства Keywords (необязательно) Keywords static property value (optional)
Значение ключа Keywords перечисляется, но имя статического свойства можно использовать в запросе с хэш-таблицей. The Keywords key is enumerated, but you can use a static property name in the hash table query. Вместо того чтобы использовать возвращаемую строку, имя свойства должно преобразовываться в значение с применением свойства Value__ . Rather than using the returned string, the property name must be converted to a value with the Value__ property.
Например, следующий скрипт использует свойство Value__ . For example, the following script uses the Value__ property.
Фильтрация по идентификатору события Filtering by Event Id
Для получения более конкретных данных результаты запроса можно отфильтровать по идентификатору события . Идентификатор события указывается в хэш-таблице как ключ ID , а значение соответствует конкретному идентификатору события . В средстве Просмотр событий Windows отображается идентификатор события . В этом примере используется идентификатор события 1023 . To get more specific data, the query’s results are filtered by Event Id . The Event Id is referenced in the hash table as the key ID and the value is a specific Event Id . The Windows Event Viewer displays the Event Id . This example uses Event Id 1023 .
Обновите хэш-таблицу и добавьте пару ключ — значение с ключом ID и значением 1023 . Update the hash table and include the key-value pair with the key, ID and the value, 1023 .
Фильтрация по уровню Filtering by Level
Чтобы дополнительно уточнить результаты и включить только события, которые являются ошибками, используйте ключ Level . To further refine the results and include only events that are errors, use the Level key. В средстве Просмотр событий Windows значения Level отображаются в виде строковых значений, но они являются перечисляемыми значениями. Windows Event Viewer displays the Level as string values, but they are enumerated values. Если вы используете ключ Level со строковым значением, в хэш-таблице отображается сообщение об ошибке. In the hash table, if you use the Level key with a string value, an error message is displayed.
У ключа Level есть такие значения, как Error (Ошибка), Warning (Предупреждение) или Informational (Информация). Level has values such as Error , Warning , or Informational . Используйте следующую команду для отображения имен свойств StandardEventLevel . Use the following command to display the StandardEventLevel property names.
Перечисляемые значения описаны в .NET Framework . The enumerated values are documented in the .NET Framework . Дополнительные сведения см. в разделе о команде перечисления StandardEventLevel. For more information, see StandardEventLevel Enumeration.
Имена ключа Level и перечисляемые значения выглядят следующим образом: The Level key’s names and enumerated values are as follows:
Имя Name | Значение Value |
---|---|
Подробный Verbose | 5 5 |
Informational Informational | 4 4 |
Предупреждение Warning | 3 3 |
Error Error | 2 2 |
Critical Critical | 1 1 |
LogAlways LogAlways | 0 0 |
Хэш-таблица для готового запроса содержит ключ Level и его значение — 2 . The hash table for the completed query includes the key, Level , and the value, 2 .
Статическое свойство уровня в перечислении (необязательно) Level static property in enumeration (optional)
Значение ключа Level перечисляется, но имя статического свойства можно использовать в запросе к хэш-таблице. The Level key is enumerated, but you can use a static property name in the hash table query. Вместо того чтобы использовать возвращаемую строку, имя свойства должно преобразовываться в значение с применением свойства Value__ . Rather than using the returned string, the property name must be converted to a value with the Value__ property.
Например, следующий скрипт использует свойство Value__ . For example, the following script uses the Value__ property.