Compartilhar via


Get-WinEvent

Obtém eventos de logs de eventos e arquivos de log de rastreamento de eventos em computadores locais e remotos.

Sintaxe

Get-WinEvent [-LogName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Get-WinEvent [-Path] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Get-WinEvent [-ProviderName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Get-WinEvent -FilterHashTable <Hashtable[]> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Get-WinEvent [-ListLog] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]

Get-WinEvent [-ListProvider] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]

Get-WinEvent -FilterXml <XmlDocument> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]

Descrição

O cmdlet Get-WinEvent obtém eventos de logs de eventos, incluindo logs clássicos, como os logs de Sistema e Aplicativo, e os logs de eventos que são gerados pela nova tecnologia Log de Eventos do Windows lançada no Windows Vista. Ele também obtém eventos de arquivos de log gerados pelo Rastreamento de Eventos para Windows (ETW).

Sem parâmetros, um comando Get-WinEvent obtém todos os eventos de todos os logs de eventos no computador. Para interromper o comando, pressione CTRL+C.

Get-WinEvent também lista logs de eventos e provedores de log de eventos. Você pode obter eventos de logs selecionados ou de logs gerados por provedores de eventos selecionados. E você pode combinar eventos de várias fontes em um único comando. Get-WinEvent permite filtrar eventos com o uso de consultas XPath, consultas XML estruturadas e consultas simplificadas de tabela de hash.

Observação: Get-WinEvent requer o Windows Vista, o Windows Server 2008 R2 ou versões posteriores do Windows. E requer o Microsoft .NET Framework 3.5 ou uma versão posterior.

Parâmetros

-ComputerName <string>

Obtém eventos de logs de eventos no computador especificado. Digite o nome NetBIOS, um endereço IP ou um nome de domínio totalmente qualificado do computador. O valor padrão é o computador local.

Este parâmetro aceita apenas um nome de computador de cada vez. Para localizar logs de eventos ou eventos em vários computadores, use uma instrução ForEach. Para obter mais informações sobre esse parâmetro, veja os exemplos.

Para a obtenção de eventos e logs de eventos de computadores remotos, a porta do firewall para o serviço de log de eventos deve ser configurada para permitir acesso remoto.

Este parâmetro não se baseia na comunicação remota do Windows PowerShell. É possível usar o parâmetro ComputerName mesmo que o seu computador não esteja configurado para executar comandos remotos.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Credential <PSCredential>

Especifica uma conta de usuário com permissão para executar essa ação. O valor padrão é o usuário atual.

Digite um nome de usuário, como Usuário01 ou Domínio01\Usuário01. Ou insira um objeto PSCredential, como aquele gerado pelo cmdlet Get-Credential. Uma senha será solicitada após a digitação do nome do usuário. Se você digitar somente o nome do parâmetro, será solicitado um nome de usuário e uma senha.

Necessário?

false

Posição?

named

Valor padrão

Usuário atual

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-FilterHashTable <Hashtable[]>

Usa uma consulta em formato de tabela de hash para selecionar eventos de um ou mais logs de eventos. A consulta contém uma tabela de hash com um ou mais pares de chave e valor.

As consultas à tabela de hash têm as seguintes regras:

-- As chaves e os valores não fazem distinção de maiúsculas e minúsculas.

--Caracteres curinga só são válidos nos valores associados às chaves LogName e ProviderName.

-- Cada chave só pode ser listada uma vez em cada tabela de hash.

-- O valor Path tem caminhos para arquivos de log .etl, .evt e .evtx.

-- As chaves LogName, Path e ProviderName podem ser usadas na mesma consulta.

-- A chave UserID pode ter um SID (identificador de segurança) válido ou um nome de conta de domínio que pode ser usado para construir um objeto System.Security.Principal.NTAccount válido.

-- O valor Data pode ter dados de evento em um campo sem nome. Isso é válido para eventos em logs de eventos clássicos.

-- A chave * representa um campo de dados de evento nomeado.

Quando Get-WinEvent não puder interpretar um par de chave e valor, ele interpretará a chave como o nome com distinção de maiúsculas e minúsculas dos dados de evento no evento.

Os pares de chave e valor válidos são os seguintes:

-- LogName=<String[]>

-- ProviderName=<String[]>

-- Path=<String[]>

-- Keywords=<Long[]>

-- ID=<Int32[]>

-- Level=<Int32[]>

-- StartTime=<DateTime>

-- EndTime=<DateTime>

-- UserID=<SID>

-- Data=<String[]>

-- *=<String[]>

Necessário?

true

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

true (ByValue)

Aceitar caracteres curinga?

false

-FilterXml <XmlDocument>

Usa uma consulta estruturada XML para selecionar eventos de um ou mais logs de eventos.

Para gerar uma consulta XML válida, use os recursos Criar Modo de Exibição Personalizado e Filtrar Log Atual no Visualizador de Eventos. Use os itens na caixa de diálogo para criar uma consulta e clique na guia XML para exibir a consulta no formato XML. Você pode copiar o XML da guia XML para o valor do parâmetro FilterXml. Para obter mais informações sobre os recursos do Visualizador de Eventos, consulte a Ajuda do Visualizador de Eventos.

Normalmente, você usa uma consulta XML para criar uma consulta complexa que contém várias instruções XPath. O formato de XML também lhe permite usar um elemento "Suprima" XML que exclui eventos da consulta. Para obter mais informações sobre o esquema XML das consultas de logs de eventos, consulte os tópicos a seguir na Biblioteca MSDN (Microsoft Developer Network).

-- "Query Schema": https://go.microsoft.com/fwlink/?LinkId=143685 (em inglês)

-- "XML Event Queries", em "Event Selection": https://go.microsoft.com/fwlink/?LinkID=143608 (em inglês)

Necessário?

true

Posição?

named

Valor padrão

Nenhum

Aceitar entrada do pipeline?

true (ByValue)

Aceitar caracteres curinga?

false

-FilterXPath <string>

Usa uma consulta XPath para selecionar eventos de um ou mais logs.

Para obter mais informações sobre a linguagem XPath, consulte "Filtros de seleção" em "Seleção de eventos" e na "Referência XPath" na Biblioteca MSDN.

Necessário?

false

Posição?

named

Valor padrão

Nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Force <switch>

Obtém logs analíticos e de depuração, além de outros logs de eventos. O parâmetro Force é exigido para obter um log analítico ou de depuração quando o valor do parâmetro de nome inclui caracteres curinga.

Por padrão, Get-WinEvent exclui esses logs, a menos que você especifique o nome completo de um log analítico ou de depuração.

Necessário?

false

Posição?

named

Valor padrão

Os logs analíticos e de depuração não são retornados em resposta a consultas que usam caracteres curinga.

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-ListLog <string[]>

Obtém os logs de eventos especificados. Digite os nomes dos logs de eventos em uma lista separada por vírgulas. Os caracteres curinga são permitidos. Para obter todos os logs, insira o valor *.

Necessário?

true

Posição?

1

Valor padrão

Nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

true

-ListProvider <string[]>

Obtém os provedores de log de eventos especificados. Um provedor de log de eventos é um programa ou serviço que grava eventos no log de eventos.

Digite os nomes de provedores em uma lista separada por vírgulas. Os caracteres curinga são permitidos. Para obter os provedores de todos os logs de eventos no computador, insira o valor *.

Necessário?

true

Posição?

1

Valor padrão

Nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

true

-LogName <string[]>

Obtém eventos dos logs de eventos especificados. Digite os nomes dos logs de eventos em uma lista separada por vírgulas. Os caracteres curinga são permitidos. Também é possível enviar nomes de log por pipe para Get-WinEvent.

Necessário?

true

Posição?

1

Valor padrão

Nenhum

Aceitar entrada do pipeline?

true (ByValue)

Aceitar caracteres curinga?

true

-MaxEvents <int64>

Especifica o número máximo de eventos retornados por Get-WinEvent. Insira um inteiro. O padrão é retornar todos os eventos nos logs ou arquivos.

Necessário?

false

Posição?

named

Valor padrão

Todos os eventos

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Oldest

Retorna os eventos na ordem do mais antigo primeiro. Por padrão, os eventos são retornados na ordem do mais novo primeiro.

Este parâmetro é obrigatório para obter eventos de arquivos .etl e .evt. e de logs analíticos e de depuração. Nesses arquivos, os eventos são registrados na ordem do mais antigo primeiro e só podem ser retornados nessa ordem.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-Path <string[]>

Obtém eventos dos arquivos de logs de eventos especificados. Insira os caminhos dos arquivos de log em uma lista separada por vírgulas ou use caracteres curinga para criar padrões de caminho de arquivo.

Get-WinEvent dá suporte a arquivos com as extensões de nome de arquivo .evt, .evtx e .etl. Você pode incluir eventos de diferentes arquivos e tipos de arquivo no mesmo comando.

Necessário?

true

Posição?

1

Valor padrão

Nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

true

-ProviderName <string[]>

Obtém eventos gravados pelos provedores de log de eventos especificados. Insira os nomes dos provedores em uma lista separada por vírgulas ou use caracteres curinga para criar padrões de nome de provedor.

Um provedor de log de eventos é um programa ou serviço que grava eventos no log de eventos. Não é um provedor do Windows PowerShell.

Necessário?

true

Posição?

1

Valor padrão

Nenhum

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

true

<CommonParameters>

Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.

Entradas e saídas

O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.

Entradas

System.String, System.Xml.XmlDocument, System.Collections.Hashtable.

Você pode canalizar um LogName (cadeia de caracteres), uma consulta FilterXML ou uma consulta FilterHashTable para Get-WinEvent.

Saídas

System.Diagnostics.Eventing.Reader.EventLogConfiguration, System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics.Eventing.Reader.ProviderMetadata

Com o parâmetro ListLog, Get-WinEvent retorna objetos System.Diagnostics.Eventing.Reader.EventLogConfiguration. Com o parâmetro ListProvider, Get-WinEvent retorna objetos System.Diagnostics.Eventing.Reader.ProviderMetadata. Com todos os outros parâmetros, Get-WinEvent retorna objetos System.Diagnostics.Eventing.Reader.EventLogRecord.

Observações

Get-WinEvent foi desenvolvido para substituir o cmdlet Get-EventLog em computadores que executam o Windows Vista e versões mais recentes do Windows. Get-EventLog só obtém eventos em logs de eventos clássicos. Get-EventLog permanece no Windows PowerShell 2.0 para sistemas anteriores ao Windows Vista.

Exemplo 1

C:\PS>get-winevent -listlog  *

Descrição
-----------
Esse comando obtém todos os logs do computador local.
    
Os logs são listados na ordem em que são obtidos por Get-WinEvent. Os logs clássicos normalmente são recuperados primeiro, seguidos pelos novos logs de Eventos do Windows.
    
Como em geral há mais de cem logs de eventos, este parâmetro requer um nome de log ou um padrão de nome. Para obter todos os logs, use *.





Exemplo 2

C:\PS>get-winevent -listlog Setup | format-list -property *

    
    FileSize                       : 69632
    IsLogFull                      : False
    LastAccessTime                 : 2/14/2008 12:55:12 AM
    LastWriteTime                  : 7/9/2008 3:12:05 AM
    OldestRecordNumber             : 1
    RecordCount                    : 3
    LogName                        : Setup
    LogType                        : Operational
    LogIsolation                   : Application
    IsEnabled                      : True
    IsClassicLog                   : False
    SecurityDescriptor             : O:BAG:SYD:(A;;0xf0007;;;SY)(A;
                                     (A;;0x1;;;S-1-5-32-573)
    LogFilePath                    : %SystemRoot%\System32\Winevt\L
    MaximumSizeInBytes             : 1052672
    LogMode                        : Circular
    OwningProviderName             : Microsoft-Windows-Eventlog
    ProviderNames                  : {Microsoft-Windows-WUSA, Micro
    ProviderLevel                  :
    ProviderKeywords               :
    ProviderBufferSize             : 64
    ProviderMinimumNumberOfBuffers : 0
    ProviderMaximumNumberOfBuffers : 64
    ProviderLatency                : 1000
    ProviderControlGuid            :

Descrição
-----------
Esses comandos obtêm um objeto que representa o log Sistema clássico no computador local. O objeto inclui informações úteis sobre o log, incluindo seu tamanho, o provedor de log de eventos, o caminho de arquivo e se ele está habilitado.





Exemplo 3

C:\PS>get-winevent -listlog * -computername Server01| where {$_.recordcount}

Descrição
-----------
Este comando só obtém logs de eventos no computador Server01 que contém eventos. Muitos logs podem estar vazios. 
    
O comando usa a propriedade RecordCount do objeto EventLogConfiguration que Get-WinEvent retorna quando você usa o parâmetro ListLog.





Exemplo 4

C:\PS>$s = "Server01", "Server02", "Server03"

C:\PS> foreach ($server in $s) 
     {$server; get-winevent -listlog "Windows PowerShell" -computername $server}

Descrição
-----------
Os comandos neste exemplo obtêm objetos que representam os logs de eventos do Windows PowerShell nos computadores Server01, Server02 e Server03. Este comando usa a palavra-chave Foreach porque o parâmetro ComputerName assume apenas um valor.
    
O primeiro comando salva os nomes dos computadores na variável $s.
    
O segundo comando usa uma instrução Foreach. Para cada um dos computadores na variável $s, ele executa o comando no bloco de scripts (dentro das chaves). Primeiro, o comando imprime o nome do computador. Em seguida, executa um comando Get-WinEvent para obter um objeto que representa o log do Windows PowerShell.





Exemplo 5

C:\PS>get-winevent -listprovider *

Descrição
-----------
Este comando obtém os provedores de log de eventos no computador local e os logs nos quais eles gravados, se existirem.





Exemplo 6

C:\PS>(get-winevent -listlog Application).providernames

Descrição
-----------
Este comando obtém todos os provedores que gravam no log Application no computador local.





Exemplo 7

C:\PS>>get-winevent -listprovider *policy*

Descrição
-----------
Este comando obtém os provedores de log de eventos cujos nomes incluem a palavra "policy".





Exemplo 8

C:\PS>(get-winevent -listprovider microsoft-windows-grouppolicy).events | format-table id, description -auto

Descrição
-----------
Este comando lista as IDs de evento que o provedor de eventos Microsoft-Windows-GroupPolicy gera junto com a descrição de evento.
    
Ele usa a propriedade Events do objeto que Get-WinEvent retorna quando você usa o parâmetro ListProvider e usa as propriedades ID e Description do objeto na propriedade Events.





Exemplo 9

C:\PS>$events = get-winevent -logname "Windows PowerShell"

C:\PS> $events.count
195
    
C:\PS> $events | group-object id -noelement | sort-object count -desc
Count Name
----- ----
  147 600
   22 400
   21 601
    3 403
    2 103
    
 C:\PS> $events | group-object leveldisplayname -noelement
Count Name
----- ----
    2 Warning
  193 Information

Descrição
-----------
Este exemplo mostra como usar as propriedades dos objetos de evento que Get-WinEvent retorna para saber sobre os eventos em um log de eventos.
    
O primeiro comando usa o cmdlet Get-WinEvent para obter todos os eventos no log de eventos do Windows PowerShell. Em seguida, ele os salva na variável $events. O nome do log está entre aspas porque contém um espaço.
    
O segundo comando usa a propriedade Count de coleções de objetos para encontrar o número de entradas no log de eventos. 
    
O terceiro comando exibe a incidência de cada evento no log, com os eventos mais frequentes primeiro. Neste exemplo, a ID de evento 600 é a mais frequente.
    
O quarto comando agrupa os itens pelo valor de suas propriedades LevelDisplayName para mostrar quantos eventos de erro, aviso e informações existem no log.





Exemplo 10

C:\PS>get-winevent -logname *disk*, Microsoft-Windows-Kernel-WHEA

Descrição
-----------
Este comando obtém os eventos de erro cujos nomes incluem "disk" de todos os logs de eventos no computador e do log de eventos Microsoft-Windows-Kernel-WHEA.





Exemplo 11

C:\PS>get-winevent -path 'c:\ps-test\Windows PowerShell.evtx'

Descrição
-----------
Este comando obtém eventos de uma cópia do arquivo do log de eventos do Windows PowerShell em um diretório de teste. O caminho está entre aspas porque o nome do log inclui um espaço.





Exemplo 12

C:\PS>get-winevent -path 'c:\tracing\tracelog.etl' -maxevents 100 -oldest
    
C:\PS> get-winevent -path 'c:\tracing\tracelog.etl' -oldest | sort-object -property timecreated -desc | select-object -first 100

Descrição
-----------
Esses comandos obtêm os 100 primeiros eventos de um arquivo de log de rastreamento de eventos ETW (Rastreamento de Evento para Windows).

O primeiro comando obtém os 100 eventos mais antigos no log. Ele usa o cmdlet Get-WinEvent para obter eventos do arquivo Tracelog.etl. Usa também o parâmetro MaxEvents para limitar a recuperação a 100 eventos. Como os eventos são listados na ordem em que são gravados no log (mais antigo primeiro), o parâmetro Oldest é necessário.

O segundo comando obtém os 100 eventos mais recentes no log. Ele usa o cmdlet Get-WinEvent para obter todos os eventos do arquivo Tracing.etl. Ele passa
os eventos para o cmdlet Sort-Object, que os classifica em ordem decrescente de acordo com o valor da propriedade TimeCreated. Em seguida, envia os eventos classificados para o cmdlet Select-Object para selecionar os 100 eventos mais recentes.





Exemplo 13

C:\PS>get-winevent -path "c:\tracing\tracelog.etl", "c:\Logs\Windows PowerShell.evtx" -oldest | where {$_.id -eq "103"}

Descrição
-----------
Este exemplo mostra como obter eventos de um arquivo de log de rastreamento de eventos (.etl) e de uma cópia do arquivo de log do Windows PowerShell (.evtx) salva em um diretório de testes.

Você pode combinar vários tipos de arquivos em um único comando. Como os arquivos contêm o mesmo tipo de objeto .NET Framework (um objeto EventLogRecord), você pode usar as mesmas propriedades para filtrá-los.

Observe que o comando requer o parâmetro Oldest porque ele lê de um arquivo .etl, mas o parâmetro Oldest se aplica aos dois arquivos.





Exemplo 14

C:\PS># Use the Where-Object cmdlet
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -logname "Windows PowerShell" | where {$_.timecreated -ge $yesterday}


# Uses FilterHashTable
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -FilterHashTable @{LogName='Windows PowerShell'; Level=3; StartTime=$yesterday}


# Use FilterXML
C:\PS> get-winevent -FilterXML "<QueryList><Query><Select Path='Windows PowerShell'>*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select></Query></QueryList>"


# Use FilterXPath
C:\PS> get-winevent -LogName "Windows Powershell" -FilterXPath "*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]"

Descrição
-----------
Este exemplo mostra métodos de filtragem diferentes para selecionar eventos de um log de eventos. Todos esses comandos obtêm eventos ocorridos nas últimas 24 horas do log de eventos do Windows PowerShell.

Os métodos de filtragem são mais eficientes do que o uso do cmdlet Where-Object porque os filtros são aplicados enquanto os objetos são recuperados, em vez de recuperar todos os objetos e depois filtrá-los.

Como é difícil formular datas nos formatos XML e XPath, usa-se o recurso Filtrar Log Atual do Visualizador de Eventos para criar o conteúdo XML para a data. Para obter mais informações sobre esse recurso, consulte a Ajuda do Visualizador de Eventos.





Exemplo 15

C:\PS>$date = (get-date).AddDays(-2)
    
C:\PS> $events = get-winevent -FilterHashTable @{ logname = "Microsoft-Windows-Diagnostics-Performance/Operational"; StartTime = $date; ID = 100 }

Descrição
-----------
Este exemplo usa uma tabela de hash de filtro para obter eventos do log de desempenho. 
    
O primeiro comando usa o cmdlet Get-Date e o método AddDays para obter uma data que é dois dias antes da data atual. Ele salva a data na variável $date.
    
O segundo comando usa o cmdlet Get-WinEvent com o parâmetro FilterHashTable. As chaves na tabela de hash definem um filtro que seleciona eventos do log de desempenho ocorridos nos últimos dois dias e que tenham uma ID de evento igual a 100. 
    
A chave LogName especifica o log de eventos, a chave StartTime especifica a data e a chave ID especifica a ID do evento.





Exemplo 16

C:\PS>$starttime = (get-date).adddays(-7)        
    
C:\PS> $ie-error = Get-WinEvent -FilterHashtable @{logname="application"; providername="Application Error"; data="iexplore.exe"; starttime=$starttime}

Descrição
-----------
Este exemplo usa uma tabela de hash de filtro para localizar os erros no aplicativo Internet Explorer ocorridos dentro da última semana.
    
O primeiro comando obtém a data, que é sete dias antes da data atual, e a armazena na variável $starttime.
    
O segundo comando usa o cmdlet Get-WinEvent com o parâmetro FilterHashTable. As chaves na tabela de hash definem um filtro que seleciona eventos do log Application que foram gravados pelo provedor Erro de Aplicativo e incluem a frase "iexplore.exe".
    
A chave LogName especifica o log de eventos. A chave ProviderName chave especifica o provedor de eventos, a chave StartTime especifica a data inicial dos eventos e a chave Data especifica o texto na mensagem do evento.





Consulte também

Conceitos

Get-EventLog
Get-Counter
about_Eventlogs