Get-WinEvent

Obtient les événements à partir des journaux des événements et des fichiers journaux de suivi d'événements sur les ordinateurs locaux et distants.

Syntax

Get-WinEvent
   [[-LogName] <String[]>]
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-ListLog] <String[]>
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-Force]
   [<CommonParameters>]
Get-WinEvent
   [-ListProvider] <String[]>
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [<CommonParameters>]
Get-WinEvent
   [-ProviderName] <String[]>
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-Path] <String[]>
   [-MaxEvents <Int64>]
   [-Credential <PSCredential>]
   [-FilterXPath <String>]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterHashtable] <Hashtable[]>
   [-Force]
   [-Oldest]
   [<CommonParameters>]
Get-WinEvent
   [-MaxEvents <Int64>]
   [-ComputerName <String>]
   [-Credential <PSCredential>]
   [-FilterXml] <XmlDocument>
   [-Oldest]
   [<CommonParameters>]

Description

Cette applet de commande est disponible uniquement sur la plateforme Windows.

L’applet Get-WinEvent de commande obtient des événements à partir des journaux d’événements, y compris les journaux classiques, tels que les journaux système et application . L’applet de commande obtient les données des journaux d’événements générés par la technologie journal des événements Windows introduite dans Windows Vista et les événements dans les fichiers journaux générés par le suivi des événements pour Windows (ETW). Par défaut, Get-WinEvent retourne les informations d’événement dans l’ordre du plus récent au plus ancien.

Get-WinEvent répertorie les journaux d’événements et les fournisseurs de journaux d’événements. Pour interrompre la commande, appuyez sur Ctrl+C. Vous pouvez obtenir les événements à partir des journaux sélectionnés ou des journaux générés par les fournisseurs d'événements sélectionnés. En outre, vous pouvez combiner des événements provenant de plusieurs sources dans une seule commande. Get-WinEvent vous permet de filtrer des événements à l’aide de requêtes XPath, de requêtes XML structurées et de requêtes de table de hachage.

Si vous n’exécutez pas PowerShell en tant qu’Administration istrateur, vous pouvez voir des messages d’erreur que vous ne pouvez pas récupérer d’informations sur un journal.

Exemples

Exemple 1 : Obtenir tous les journaux d’activité d’un ordinateur local

Cette commande obtient tous les journaux d’événements sur l’ordinateur local. Les journaux sont répertoriés dans l’ordre qui Get-WinEvent les obtient. Les journaux classiques sont récupérés en premier, suivis des nouveaux journaux d’événements Windows. Il est possible qu’un RecordCount d’un journal soit null, qui est vide ou zéro.

Get-WinEvent -ListLog *

LogMode   MaximumSizeInBytes RecordCount LogName
-------   ------------------ ----------- -------
Circular            15532032       14500 Application
Circular             1052672         117 Azure Information Protection
Circular             1052672        3015 CxAudioSvcLog
Circular            20971520             ForwardedEvents
Circular            20971520           0 HardwareEvents

L’applet Get-WinEvent de commande obtient des informations de journal à partir de l’ordinateur. Le paramètre ListLog utilise l’astérisque (*) wild carte pour afficher des informations sur chaque journal.

Exemple 2 : Obtenir le journal d’installation classique

Cette commande obtient un objet EventLogConfiguration qui représente le journal d’installation classique. L’objet inclut des informations sur le journal, telles que la taille de fichier, le fournisseur, le chemin d’accès au fichier et si le journal est activé.

Get-WinEvent -ListLog Setup | Format-List -Property *

FileSize                       : 69632
IsLogFull                      : False
LastAccessTime                 : 3/13/2019 09:41:46
LastWriteTime                  : 3/13/2019 09:41:46
OldestRecordNumber             : 1
RecordCount                    : 23
LogName                        : Setup
LogType                        : Operational
LogIsolation                   : Application
IsEnabled                      : True
IsClassicLog                   : False
SecurityDescriptor             : O:BAG:SYD: ...
LogFilePath                    : %SystemRoot%\System32\Winevt\Logs\Setup.evtx
MaximumSizeInBytes             : 1052672
LogMode                        : Circular
OwningProviderName             : Microsoft-Windows-Eventlog
ProviderNames                  : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel                  :
ProviderKeywords               :
ProviderBufferSize             : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency                : 1000
ProviderControlGuid            :

L’applet Get-WinEvent de commande utilise le paramètre ListLog pour spécifier le journal d’installation. L’objet est envoyé vers le bas du pipeline à l’applet Format-List de commande. Format-Listutilise le paramètre Property avec l’astérisque (*) wild carte pour afficher chaque propriété.

Exemple 3 : Configurer le journal de sécurité classique

Cette commande obtient un objet EventLogConfiguration qui représente le journal de sécurité classique. L’objet est ensuite utilisé pour configurer les paramètres du journal, tels que la taille maximale du fichier, le chemin d’accès au fichier et si le journal est activé.

$log = Get-WinEvent -ListLog Security
$log.MaximumSizeInBytes = 1gb
try{
   $log.SaveChanges()
   Get-WinEvent -ListLog Security | Format-List -Property *
}catch [System.UnauthorizedAccessException]{
   $ErrMsg  = 'You do not have permission to configure this log!'
   $ErrMsg += ' Try running this script with administrator privileges. '
   $ErrMsg += $_.Exception.Message
   Write-Error $ErrMsg
}

FileSize                       : 69632
IsLogFull                      : False
LastAccessTime                 : 3/13/2019 09:41:46
LastWriteTime                  : 3/13/2019 09:41:46
OldestRecordNumber             : 1
RecordCount                    : 23
LogName                        : Security
LogType                        : Administrative
LogIsolation                   : Custom
IsEnabled                      : True
IsClassicLog                   : True
SecurityDescriptor             : O:BAG:SYD: ...
LogFilePath                    : %SystemRoot%\System32\Winevt\Logs\Security.evtx
MaximumSizeInBytes             : 1073741824
LogMode                        : Circular
OwningProviderName             :
ProviderNames                  : {Microsoft-Windows-WUSA, Microsoft-Windows-ActionQueue...
ProviderLevel                  :
ProviderKeywords               :
ProviderBufferSize             : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency                : 1000
ProviderControlGuid            :

L’applet Get-WinEvent de commande utilise le paramètre ListLog pour spécifier le journal de sécurité . L’objet est enregistré dans une variable. La propriété MaximumSizeInBytes est définie sur 1 gigaoctet sur l’objet. La méthode SaveChanges est appelée pour envoyer (push) la modification au système à l’intérieur d’un bloc try pour gérer les violations d’accès. L’applet Get-WinEvent de commande est appelée à nouveau dans le journal de sécurité et redirigée vers l’applet Format-List de commande pour vérifier que la propriété MaximumSizeInBytes a été enregistrée sur l’ordinateur.

Exemple 4 : Obtenir les journaux des événements à partir d’un serveur

Cette commande obtient uniquement les journaux des événements sur l’ordinateur local qui contient des événements. Il est possible qu’un RecordCount d’un journal soit null ou zéro. L’exemple utilise la $_ variable. Pour plus d’informations, consultez about_Automatic_Variables.

Get-WinEvent -ListLog * -ComputerName localhost | Where-Object { $_.RecordCount }

LogMode   MaximumSizeInBytes RecordCount LogName
-------   ------------------ ----------- -------
Circular            15532032       14546 Application
Circular             1052672         117 Azure Information Protection
Circular             1052672        2990 CxAudioSvcLog
Circular             1052672           9 MSFTVPN Setup
Circular             1052672         282 OAlerts

L’applet Get-WinEvent de commande obtient des informations de journal à partir de l’ordinateur. Le paramètre ListLog utilise l’astérisque (*) wild carte pour afficher des informations sur chaque journal. Le paramètre ComputerName spécifie d’obtenir les journaux à partir de l’ordinateur local, localhost. Les objets sont envoyés au pipeline vers l’applet Where-Object de commande. Where-Object utilise $_.RecordCount pour retourner uniquement les journaux qui contiennent des données. $_ est une variable qui représente l’objet actuel dans le pipeline. RecordCount est une propriété de l’objet avec une valeur non Null.

Exemple 5 : Obtenir les journaux des événements à partir de plusieurs serveurs

Cet exemple obtient des objets qui représentent les journaux des événements d’application sur trois ordinateurs : Server01, Server02 et Server03. Le mot clé ForEach est utilisé, car le paramètre ComputerName n’accepte qu’une seule valeur. Pour plus d’informations, consultez about_Foreach.

$S = 'Server01', 'Server02', 'Server03'
ForEach ($Server in $S) {
  Get-WinEvent -ListLog Application -ComputerName $Server |
    Select-Object LogMode, MaximumSizeInBytes, RecordCount, LogName,
      @{name='ComputerName'; expression={$Server}} |
    Format-Table -AutoSize
}

LogMode MaximumSizeInBytes RecordCount LogName     ComputerName
 ------- ------------------ ----------- -------     ------------
Circular           15532032       14577 Application Server01
Circular           15532032        9689 Application Server02
Circular           15532032        5309 Application Server03

La variable $S stocke les noms trois serveurs : Server01, Server02 et Server03. L’instruction ForEach utilise une boucle pour traiter chaque serveur. ($Server in $S) Le bloc de script dans les accolades ({ }) exécute la Get-WinEvent commande. Le paramètre ListLog spécifie le journal des applications . Le paramètre ComputerName utilise la variable $Server pour obtenir des informations de journal à partir de chaque serveur.

Les objets sont envoyés au pipeline vers l’applet Select-Object de commande. Select-Objectobtient les propriétés LogMode, MaximumSizeInBytes, RecordCount, LogName et utilise une expression calculée pour afficher ComputerName à l’aide de la $Server variable. Les objets sont envoyés au pipeline à l’applet Format-Table de commande pour afficher la sortie dans la console PowerShell. Le paramètre AutoSize met en forme la sortie pour qu’elle corresponde à l’écran.

Exemple 6 : Obtenir des fournisseurs de journaux d’événements et des noms de journaux

Cette commande obtient les fournisseurs de journaux d’événements et les journaux dans lesquels ils écrivent.

Get-WinEvent -ListProvider *

Name     : .NET Runtime
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : .NET Runtime Optimization Service
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

L’applet Get-WinEvent de commande obtient des informations de journal à partir de l’ordinateur. Le paramètre ListProvider utilise l’astérisque (*) wild carte pour afficher des informations sur chaque fournisseur. Dans la sortie, le nom est le fournisseur et LogLinks est le journal dans lequel le fournisseur écrit.

Exemple 7 : Obtenir tous les fournisseurs de journaux d’événements qui écrivent dans un journal spécifique

Cette commande obtient tous les fournisseurs qui écrivent dans le journal des applications .

(Get-WinEvent -ListLog Application).ProviderNames

.NET Runtime
.NET Runtime Optimization Service
Application
Application Error
Application Hang
Application Management

L’applet Get-WinEvent de commande obtient des informations de journal à partir de l’ordinateur. Le paramètre ListLog utilise Application pour obtenir des objets pour ce journal. ProviderNames est une propriété de l’objet et affiche les fournisseurs qui écrivent dans le journal d’application .

Exemple 8 : Obtenir des noms de fournisseurs de journaux d’événements qui contiennent une chaîne spécifique

Cette commande obtient les fournisseurs de journaux d’événements avec des noms qui incluent une chaîne spécifique dans le nom du fournisseur.

Get-WinEvent -ListProvider *Policy*

Name     : Group Policy Applications
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : Group Policy Client
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

Name     : Group Policy Data Sources
LogLinks : {Application}
Opcodes  : {}
Tasks    : {}

L’applet Get-WinEvent de commande obtient des informations de journal à partir de l’ordinateur. Le paramètre ListProvider utilise le caractère générique () astérisque (*) wild carte pour rechercher la stratégie n’importe où dans le nom du fournisseur.

Exemple 9 : Obtenir les ID d’événement générés par le fournisseur d’événements

Cette commande répertorie les ID d’événement générés par le fournisseur d’événements Microsoft-Windows-GroupPolicy , ainsi que la description de l’événement.

(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Format-Table Id, Description

Id  Description
  --  -----------
1500  The Group Policy settings for the computer were processed successfully...
1501  The Group Policy settings for the user were processed successfully...
4115  Group Policy Service started.
4116  Started the Group Policy service initialization phase.
4117  Group Policy Session started.

L’applet Get-WinEvent de commande obtient des informations de journal à partir de l’ordinateur. Le paramètre ListProvider spécifie le fournisseur, Microsoft-Windows-GroupPolicy. L’expression est encapsulée entre parenthèses et utilise la propriété Events pour obtenir des objets. Les objets sont envoyés au pipeline vers l’applet Format-Table de commande. Format-Tableaffiche l’ID et la description des objets d’événement.

Exemple 10 : Obtenir des informations de journal à partir des propriétés de l’objet d’événement

Cet exemple montre comment obtenir des informations sur le contenu d’un journal à l’aide de propriétés d’objet d’événement. Les objets d’événement sont stockés dans une variable, puis regroupés et comptés par ID d’événement et Niveau.

$Event = Get-WinEvent -LogName 'Windows PowerShell'
$Event.Count
$Event | Group-Object -Property Id -NoElement | Sort-Object -Property Count -Descending
$Event | Group-Object -Property LevelDisplayName -NoElement

195

Count  Name
-----  ----
  147  600
   22  400
   21  601
    3  403
    2  103

Count  Name
-----  ----
    2  Warning
  193  Information

L’applet Get-WinEvent de commande utilise le paramètre LogName pour spécifier le journal des événements Windows PowerShell . Les objets d’événement sont stockés dans la $Event variable. La propriété Count d’affiche $Eventle nombre total d’événements enregistrés.

La $Event variable est envoyée au pipeline à l’applet Group-Object de commande. Group-Object utilise le paramètre Property pour spécifier la propriété Id et compte les objets par la valeur ID d’événement. Le paramètre NoElement supprime d’autres propriétés de la sortie des objets. Les objets groupés sont envoyés au pipeline vers l’applet Sort-Object de commande. Sort-Object utilise le paramètre Property pour trier les objets par Count. Le paramètre décroissant affiche la sortie par nombre, du plus haut au plus bas. Dans la sortie, la colonne Count contient le nombre total de chaque événement. La colonne Name contient les numéros d’ID d’événement groupés.

La $Event variable est envoyée au pipeline à l’applet Group-Object de commande. Group-Object utilise le paramètre Property pour spécifier la propriété LevelDisplayName et compte les objets par LevelDisplayName. Les objets sont regroupés par les niveaux tels que Avertissement et Informations. Le paramètre NoElement supprime d’autres propriétés de la sortie. Dans la sortie, la colonne Count contient le nombre total de chaque événement. La colonne Name contient le LevelDisplayName groupé.

Exemple 11 : Obtenir les événements d’erreur qui ont une chaîne spécifiée dans leur nom

Cet exemple utilise une chaîne séparée par des virgules de noms de journaux. La sortie est regroupée par le niveau tel que l’erreur ou l’avertissement et le nom du journal.

Get-WinEvent -LogName *PowerShell*, Microsoft-Windows-Kernel-WHEA* |
  Group-Object -Property LevelDisplayName, LogName -NoElement |
    Format-Table -AutoSize

Count  Name
-----  ----
    1  Error, PowerShellCore/Operational
   26  Information, Microsoft-Windows-Kernel-WHEA/Operational
  488  Information, Microsoft-Windows-PowerShell/Operational
   77  Information, PowerShellCore/Operational
 9835  Information, Windows PowerShell
   19  Verbose, PowerShellCore/Operational
  444  Warning, Microsoft-Windows-PowerShell/Operational
  512  Warning, PowerShellCore/Operational

L’applet Get-WinEvent de commande obtient des informations de journal à partir de l’ordinateur. Le paramètre LogName utilise une chaîne séparée par des virgules avec l’astérisque (*) wild carte pour spécifier les noms de journal. Les objets sont envoyés au pipeline vers l’applet Group-Object de commande. Group-Object utilise le paramètre Property pour regrouper les objets par LevelDisplayName et LogName. Le paramètre NoElement supprime d’autres propriétés de la sortie. Les objets groupés sont envoyés au pipeline vers l’applet Format-Table de commande. Format-Table utilise le paramètre AutoSize pour mettre en forme les colonnes. La colonne Count contient le nombre total de chaque événement. La colonne Name contient le nom de NiveauDisplayName groupé et LogName.

Exemple 12 : Obtenir des événements à partir d’un journal des événements archivé

Get-WinEvent peut obtenir des informations sur les événements à partir des fichiers journaux enregistrés. Cet exemple utilise un journal PowerShell archivé stocké sur l’ordinateur local.

Get-WinEvent -Path 'C:\Test\Windows PowerShell.evtx'

ProviderName: PowerShell

TimeCreated              Id LevelDisplayName  Message
-----------              -- ----------------  -------
3/15/2019 13:54:13      403 Information       Engine state is changed from Available to Stopped...
3/15/2019 13:54:13      400 Information       Engine state is changed from None to Available...
3/15/2019 13:54:13      600 Information       Provider "Variable" is Started...
3/15/2019 13:54:13      600 Information       Provider "Function" is Started...
3/15/2019 13:54:13      600 Information       Provider "FileSystem" is Started...

L’applet Get-WinEvent de commande obtient des informations de journal à partir de l’ordinateur. Le paramètre Path spécifie le répertoire et le nom du fichier.

Exemple 13 : Obtenir un nombre spécifique d’événements à partir d’un journal des événements archivé

Ces commandes obtiennent un nombre spécifique d’événements à partir d’un journal des événements archivé. Get-WinEvent a des paramètres qui peuvent obtenir un nombre maximal d’événements ou les événements les plus anciens. Cet exemple utilise un journal PowerShell archivé stocké dans C :\Test\PowerShellCore Operational.evtx.

Get-WinEvent -Path 'C:\Test\PowerShellCore Operational.evtx' -MaxEvents 100

ProviderName: PowerShellCore

TimeCreated                 Id   LevelDisplayName  Message
-----------                 --   ----------------  -------
3/15/2019 09:54:54        4104   Warning           Creating Scriptblock text (1 of 1):...
3/15/2019 09:37:13       40962   Information       PowerShell console is ready for user input
3/15/2019 07:56:24        4104   Warning           Creating Scriptblock text (1 of 1):...
...
3/7/2019 10:53:22        40961   Information       PowerShell console is starting up
3/7/2019 10:53:22         8197   Verbose           Runspace state changed to Opening
3/7/2019 10:53:22         8195   Verbose           Opening RunspacePool

L’applet Get-WinEvent de commande obtient des informations de journal à partir de l’ordinateur. Le paramètre Path spécifie le répertoire et le nom de fichier. Le paramètre MaxEvents spécifie que 100 enregistrements sont affichés, du plus récent au plus ancien.

Exemple 14 : Suivi d’événements pour Windows

Le suivi des événements pour Windows (ETW) écrit des événements dans le journal à mesure que des événements se produisent. Les événements sont stockés dans l’ordre du plus ancien au plus récent. Un fichier ETW archivé est enregistré en tant .etl que TraceLog.etl. Les événements sont répertoriés dans l’ordre dans lequel ils sont écrits dans le journal, de sorte que le paramètre le plus ancien est requis.

Get-WinEvent -Path 'C:\Tracing\TraceLog.etl' -Oldest |
  Sort-Object -Property TimeCreated -Descending |
    Select-Object -First 100

L’applet Get-WinEvent de commande obtient des informations de journal à partir du fichier archivé. Le paramètre Path spécifie le répertoire et le nom du fichier. Le paramètre le plus ancien est utilisé pour générer des événements dans l’ordre dans lequel ils sont écrits, les plus anciens au plus récent. Les objets sont envoyés vers le bas du pipeline à l’applet Sort-Object de commande Sort-Object trie les objets dans l’ordre décroissant en fonction de la valeur de la propriété TimeCreated . Les objets sont envoyés au pipeline à l’applet Select-Object de commande qui affiche les 100 événements les plus récents.

Exemple 15 : Obtenir des événements à partir d’un journal de suivi des événements

Cet exemple montre comment obtenir les événements à partir d’un fichier journal de trace d’événements (.etl) et d’un fichier journal Windows PowerShell archivé (.evtx). Vous pouvez combiner plusieurs types de fichier dans une seule commande. Étant donné que les fichiers contiennent le même type d’objet .NET Framework , EventLogRecord, vous pouvez les filtrer avec les mêmes propriétés. La commande nécessite le paramètre le plus ancien, car il lit à partir d’un .etl fichier, mais le paramètre le plus ancien s’applique à chaque fichier.

Get-WinEvent -Path 'C:\Tracing\TraceLog.etl', 'C:\Test\Windows PowerShell.evtx' -Oldest |
  Where-Object { $_.Id -eq '403' }

L’applet Get-WinEvent de commande obtient les informations de journal des fichiers archivés. Le paramètre Path utilise une liste séparée par des virgules pour spécifier chaque répertoire de fichiers et nom de fichier. Le paramètre le plus ancien est utilisé pour générer des événements dans l’ordre dans lequel ils sont écrits, les plus anciens au plus récent. Les objets sont envoyés au pipeline vers l’applet Where-Object de commande. Where-Object utilise un bloc de script pour rechercher des événements avec un ID de 403. La $_ variable représente l’objet actuel dans le pipeline et l’ID est la propriété ID d’événement.

Exemple 16 : Filtrer les résultats du journal des événements

Cet exemple montre diverses méthodes pour filtrer et sélectionner des événements dans un journal des événements. Toutes ces commandes obtiennent des événements qui se sont produits au cours des 24 dernières heures à partir du journal des événements Windows PowerShell . Les méthodes de filtre sont plus efficaces que l’utilisation de l’applet de Where-Object commande. Les filtres sont appliqués à mesure que les objets sont récupérés. Where-Object récupère tous les objets, puis applique des filtres à tous les objets.

# Using the Where-Object cmdlet:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -LogName 'Windows PowerShell' | Where-Object { $_.TimeCreated -ge $Yesterday }

# Using the FilterHashtable parameter:
$Yesterday = (Get-Date) - (New-TimeSpan -Day 1)
Get-WinEvent -FilterHashtable @{ LogName='Windows PowerShell'; Level=3; StartTime=$Yesterday }

# Using the FilterXML parameter:
$xmlQuery = @'
<QueryList>
  <Query Id="0" Path="Windows PowerShell">
    <Select Path="System">*[System[(Level=3) and
        TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select>
  </Query>
</QueryList>
'@
Get-WinEvent -FilterXML $xmlQuery

# Using the FilterXPath parameter:
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]'
Get-WinEvent -LogName 'Windows PowerShell' -FilterXPath $XPath

Exemple 17 : Utiliser FilterHashtable pour obtenir des événements à partir du journal des applications

Cet exemple utilise le paramètre FilterHashtable pour obtenir des événements à partir du journal des applications . La table de hachage utilise des paires clé/valeur . Pour plus d’informations sur le paramètre FilterHashtable , consultez Création de requêtes Get-WinEvent avec FilterHashtable. Pour plus d’informations sur les tables de hachage, voir À propos des tables de hachage.

$Date = (Get-Date).AddDays(-2)
Get-WinEvent -FilterHashtable @{ LogName='Application'; StartTime=$Date; Id='1003' }

L’applet Get-Date de commande utilise la méthode AddDays pour obtenir une date de deux jours avant la date actuelle. L’objet date est stocké dans la $Date variable.

L’applet Get-WinEvent de commande obtient des informations de journal. Le paramètre FilterHashtable est utilisé pour filtrer la sortie. La clé LogName spécifie la valeur comme journal d’application. La clé StartTime utilise la valeur stockée dans la $Date variable. La clé ID utilise une valeur d’ID d’événement, 1003.

Exemple 18 : Utiliser FilterHashtable pour obtenir des erreurs d’application

Cet exemple utilise le paramètre FilterHashtable pour rechercher les erreurs d’application Internet Explorer qui se sont produites au cours de la semaine dernière.

$StartTime = (Get-Date).AddDays(-7)
Get-WinEvent -FilterHashtable @{
  Logname='Application'
  ProviderName='Application Error'
  Data='iexplore.exe'
  StartTime=$StartTime
}

L’applet Get-Date de commande utilise la méthode AddDays pour obtenir une date qui est de sept jours avant la date actuelle. L’objet date est stocké dans la $StartTime variable.

L’applet Get-WinEvent de commande obtient des informations de journal. Le paramètre FilterHashtable est utilisé pour filtrer la sortie. La clé LogName spécifie la valeur comme journal d’application. La clé ProviderName utilise la valeur, Erreur d’application, qui est la source de l’événement. La clé de données utilise la valeur iexplore.exe la clé StartTime utilise la valeur stockée dans $StartTime la variable.

Exemple 19 : Utiliser SuppressHashFilter pour filtrer les erreurs d’application

Comme l’exemple 16 ci-dessus, cet exemple utilise le paramètre FilterHashtable pour obtenir des événements à partir du journal des applications . Toutefois, nous ajoutons la clé SuppressHashFilter pour filtrer les événements au niveau de l’information .

$Date = (Get-Date).AddDays(-2)
$filter = @{
  LogName='Application'
  StartTime=$Date
  SuppressHashFilter=@{Level=4}
}
Get-WinEvent -FilterHashtable $filter

Dans cet exemple, Get-WinEvent obtient tous les événements du journal des applications pour les deux derniers jours, sauf ceux qui ont un niveau de 4 (informations).

Paramètres

-ComputerName

Spécifie le nom de l’ordinateur que cette applet de commande obtient des événements à partir des journaux d’événements. Tapez le nom NetBIOS, une adresse IP ou le nom de domaine complet (FQDN) de l’ordinateur. La valeur par défaut est l’ordinateur local, localhost. Ce paramètre accepte uniquement un nom d'ordinateur à la fois.

Pour obtenir les journaux d’événements à partir d’ordinateurs distants, configurez le port de pare-feu du service de journal des événements pour autoriser l’accès à distance.

Cette applet de commande ne s’appuie pas sur la communication à distance PowerShell. Vous pouvez utiliser le paramètre ComputerName même si votre ordinateur n’est pas configuré pour exécuter des commandes distantes.

Type:String
Aliases:Cn
Position:Named
Default value:Local computer
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Spécifie un compte d’utilisateur qui a l’autorisation d’exécuter cette action. La valeur par défaut est l'utilisateur actuel.

Tapez un nom d’utilisateur, tel que User01 ou Domain01\User01. Ou entrez un objet PSCredential , tel qu’un objet généré par l’applet Get-Credential de commande. Si vous tapez un nom d’utilisateur, vous êtes invité à entrer un mot de passe. Si vous tapez uniquement le nom du paramètre, vous êtes invité à entrer un nom d’utilisateur et un mot de passe.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilterHashtable

Spécifie une requête au format de table de hachage pour sélectionner des événements dans un ou plusieurs journaux d’événements. La requête contient une table de hachage avec une ou plusieurs paires clé/valeur .

Les requêtes de table de hachage comportent les règles suivantes :

  • Les clés et les valeurs ne respectent pas la casse.
  • Les caractères génériques carte sont valides uniquement dans les valeurs associées aux clés LogName et ProviderName.
  • Chaque clé ne peut être répertoriée qu’une seule fois dans chaque table de hachage.
  • La valeur Path prend les chemins d’accès aux .etlfichiers journaux et .evtx les .evtfichiers journaux.
  • Les clés LogName, Path et ProviderName peuvent être utilisées dans la même requête.
  • La clé UserID peut prendre un identificateur de sécurité valide (SID) ou un nom de compte de domaine qui peut être utilisé pour construire un objet System.Security.Principal.NTAccount valide.
  • La valeur de données prend les données d’événement dans un champ sans nom. Par exemple, les événements dans les journaux d’événements classiques.
  • <named-data> la clé représente un champ de données d’événement nommé.

Lorsqu’il Get-WinEvent ne peut pas interpréter une paire clé/valeur , il interprète la clé comme un nom sensible à la casse pour les données d’événement dans l’événement.

Les paires clé/valeur valides Get-WinEventsont les suivantes :

  • Logname=<String[]>
  • ProviderName=<String[]>
  • Chemin d’accès=<String[]>
  • Mots clés=<Long[]>
  • Identifiant=<Int32[]>
  • Niveau=<Int32[]>
  • StartTime=<DateTime>
  • EndTime=<DateTime>
  • l'UserId=<SID>
  • Données=<String[]>
  • <named-data>=<String[]>
  • SuppressHashFilter=<Hashtable>
Type:Hashtable[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FilterXml

Spécifie une requête XML structurée que cette applet de commande sélectionne des événements dans un ou plusieurs journaux d’événements.

Pour générer une requête XML valide, utilisez les fonctionnalités Créer une vue personnalisée et filtrer les fonctionnalités du journal actuel dans l’Observateur d’événements Windows. Utilisez les éléments de la boîte de dialogue pour créer une requête, puis cliquez sur l'onglet XML pour afficher la requête au format XML. Vous pouvez copier le code XML à partir de l’onglet XML dans la valeur du paramètre FilterXml . Pour plus d'informations sur les fonctionnalités de l'Observateur d'événements, consultez l'aide de l'Observateur d'événements.

Utilisez une requête XML pour créer une requête complexe qui contient plusieurs instructions XPath. Le format XML vous permet également d’utiliser un élément Suppress XML qui exclut les événements de la requête. Pour plus d’informations sur le schéma XML pour les requêtes de journal des événements, consultez La section Schéma de requête et requêtes d’événements XML de la sélection d’événements.

Vous pouvez également créer un élément Suppress à l’aide du paramètre FilterHashtable .

Type:XmlDocument
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FilterXPath

Spécifie une requête XPath que cette applet de commande sélectionne des événements dans un ou plusieurs journaux d’activité.

Pour plus d’informations sur le langage XPath, consultez référence XPath et la section Filtres de sélection de la sélection d’événements.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Obtient les journaux de débogage et d'analyse, ainsi que d'autres journaux des événements. Le paramètre Force est requis pour obtenir un journal de débogage ou analytique lorsque la valeur du paramètre name inclut des caractères génériques carte.

Par défaut, l’applet Get-WinEvent de commande exclut ces journaux, sauf si vous spécifiez le nom complet d’un journal de débogage ou analytique.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ListLog

Spécifie les journaux des événements. Entrez les noms des journaux des événements dans une liste de valeurs séparées par des virgules. Les caractères génériques sont autorisés. Pour obtenir tous les journaux, utilisez l’astérisque (*) wild carte.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-ListProvider

Spécifie les fournisseurs de journaux d’événements que cette applet de commande obtient. Le fournisseur du journal des événements est un programme ou service qui enregistre les événements dans le journal des événements.

Entrez les noms des fournisseurs dans une liste de valeurs séparées par des virgules. Les caractères génériques sont autorisés. Pour obtenir les fournisseurs de tous les journaux d’événements sur l’ordinateur, utilisez l’astérisque (*) wild carte.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-LogName

Spécifie les journaux d’événements à partir duquel cette applet de commande obtient des événements. Entrez les noms des journaux des événements dans une liste de valeurs séparées par des virgules. Les caractères génériques sont autorisés. Vous pouvez également diriger les noms de journaux vers l’applet de Get-WinEvent commande.

Remarque

PowerShell ne limite pas la quantité de journaux que vous pouvez demander. Toutefois, l’applet Get-WinEvent de commande interroge l’API Windows qui a une limite de 256. Cela peut compliquer le filtrage de tous vos journaux à la fois. Vous pouvez contourner ce problème à l’aide d’une foreach boucle pour itérer dans chaque journal comme suit : Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-MaxEvents

Spécifie le nombre maximal d’événements retournés. Entrez un entier tel que 100. La valeur par défaut consiste à retourner tous les événements des journaux ou des fichiers.

Type:Int64
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Oldest

Indiquez que cette applet de commande obtient les événements dans l’ordre le plus ancien. Par défaut, les événements sont retournés du plus ancien au plus récent.

Ce paramètre est nécessaire pour obtenir des événements à partir des .etl fichiers et .evt des journaux de débogage et d’analyse. Dans ces fichiers, les événements sont enregistrés du plus ancien au plus récent, et ne peuvent être retournés que du plus ancien au plus récent.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Spécifie le chemin d’accès aux fichiers journaux d’événements à partir duquel cette applet de commande obtient des événements. Entrez les chemins d'accès des fichiers journaux dans une liste de valeurs séparées par des virgules, ou utilisez des caractères génériques pour créer des modèles de chemin d'accès de fichier.

Get-WinEvent prend en charge les fichiers avec les .evtextensions , .evtxet .etl de nom de fichier. Vous pouvez inclure les événements de différents fichiers et types de fichier dans la même commande.

Type:String[]
Aliases:PSPath
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-ProviderName

Spécifie, en tant que tableau de chaînes, les fournisseurs de journaux d’événements à partir desquels cette applet de commande obtient des événements. Entrez les noms des fournisseurs dans une liste de valeurs séparées par des virgules, ou utilisez des caractères génériques pour créer des modèles de nom de fournisseur.

Le fournisseur du journal des événements est un programme ou service qui enregistre les événements dans le journal des événements. Ce n’est pas un fournisseur PowerShell.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

Entrées

String

Vous pouvez diriger un LogName (chaîne) vers cette applet de commande.

XmlDocument

Vous pouvez diriger une requête FilterXML vers cette applet de commande.

Hashtable

Vous pouvez diriger une requête FilterHashtable vers cette applet de commande.

Sorties

EventLogConfiguration

Avec le paramètre ListLog , cette applet de commande retourne des objets EventLogConfiguration .

EventLogRecord

Par défaut, cette applet de commande retourne des objets EventLogRecord .

ProviderMetadata

Avec le paramètre ListProvider , cette applet de commande retourne des objets ProviderMetadata .

Notes

Get-WinEvent est conçu pour remplacer l’applet Get-EventLog de commande sur les ordinateurs exécutant Windows Vista et les versions ultérieures de Windows. Get-EventLog obtient les événements uniquement dans les journaux d’événements classiques. Get-EventLog est conservé à des fins de compatibilité descendante.

Les Get-WinEvent applets de commande et Get-EventLog les applets de commande ne sont pas prises en charge dans l’environnement de préinstallation Windows (Windows PE).