Partager via


Get-WinEvent

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

Syntaxe

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 de commande obtient les événements des journaux d’événements, y compris les journaux classiques, tels que les journaux d’activité système système et des journaux d' d’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 suivi d’é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 des événements et les fournisseurs de journaux d’événements. Pour interrompre la commande, appuyez sur Ctrl+C. Vous pouvez obtenir des événements à partir des journaux sélectionnés ou des journaux générés par les fournisseurs d’événements sélectionnés. Vous pouvez également combiner des événements à partir de plusieurs sources dans une seule commande. Get-WinEvent vous permet de filtrer les é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’administrateur, 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 dans lequel 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 journal RecordCount 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 de commande Get-WinEvent obtient des informations de journal à partir de l’ordinateur. Le paramètre ListLog utilise le caractère générique astérisque (*) 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 de 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 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 de commande Format-List. utilise le paramètre Property avec le caractère générique astérisque () 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 classique Security. 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 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 de commande est appelée à nouveau dans le journal security et redirigée vers l’applet 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 que le 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 de commande Get-WinEvent obtient des informations de journal à partir de l’ordinateur. Le paramètre ListLog utilise le caractère générique astérisque (*) 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 à l’applet de commande Where-Object. Where-Object utilise $_.RecordCount pour retourner uniquement les journaux contenant 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 d’événements 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, Server02et Server03. L’instruction ForEach utilise une boucle pour traiter chaque serveur, ($Server in $S). Le bloc de script dans les accolades ({ }) exécute la commande Get-WinEvent. Le paramètre ListLog spécifie le journal application . 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 à l’applet de commande Select-Object. Select-Object obtient les propriétés LogMode, MaximumSizeInBytes, RecordCount, LogName, et utilise une expression calculée pour afficher l'ComputerName à l’aide de la variable $Server. Les objets sont envoyés au pipeline à l’applet de commande Format-Table 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 de commande Get-WinEvent obtient des informations de journal à partir de l’ordinateur. Le paramètre ListProvider utilise le caractère générique astérisque () 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 application.

(Get-WinEvent -ListLog Application).ProviderNames

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

L’applet de commande Get-WinEvent 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 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 de commande Get-WinEvent obtient des informations de journal à partir de l’ordinateur. Le paramètre ListProvider utilise le caractère générique astérisque () pour rechercher 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 de commande Get-WinEvent 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 à l’applet de commande Format-Table. Format-Table affiche l’ID de et 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 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 variable $Event. La propriété Count de $Eventaffiche le nombre total d’événements journalisés.

La variable $Event est envoyée au pipeline à l’applet de commande Group-Object. utilise le paramètre property pour spécifier la propriété ID de et compter 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 à l’applet 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 variable $Event est envoyée au pipeline à l’applet de commande Group-Object. 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 d’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 leLevelDisplayName 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 de commande Get-WinEvent obtient des informations de journal à partir de l’ordinateur. Le paramètre LogName utilise une chaîne séparée par des virgules avec le caractère générique astérisque (*) pour spécifier les noms de journal. Les objets sont envoyés au pipeline à l’applet 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 à l’applet de commande Format-Table. 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 LevelDisplayName groupé et LogName.

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

Get-WinEvent pouvez 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 de commande Get-WinEvent 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 de commande Get-WinEvent 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é sous la forme d’un .etl tel 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 de commande Get-WinEvent 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 au pipeline à l’applet de commande Sort-ObjectSort-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 de commande Select-Object 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 fichiers 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 fichier .etl, 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 de commande Get-WinEvent 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 à l’applet de commande Where-Object. Where-Object utilise un bloc de script pour rechercher des événements avec un ID de de 403. La variable $_ représente l’objet actuel dans le pipeline et 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 commande Where-Object. 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 application . La table de hachage utilise 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, consultez about_Hash_Tables.

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

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

L’applet de commande Get-WinEvent obtient des informations de journal. Le paramètre FilterHashtable est utilisé pour filtrer la sortie. La clé LogName spécifie la valeur comme journal de application . La clé StartTime utilise la valeur stockée dans la variable $Date. La clé ID de 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 de commande utilise la méthode AddDays pour obtenir une date de sept jours avant la date actuelle. L’objet date est stocké dans la variable $StartTime.

L’applet de commande Get-WinEvent obtient des informations de journal. Le paramètre FilterHashtable est utilisé pour filtrer la sortie. La clé LogName spécifie la valeur comme journal de application . La clé ProviderName utilise la valeurd’erreur d’application , qui est lasource de l’événement. La clé Data utilise la valeur iexplore.exe la clé StartTime utilise la valeur stockée dans 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 application. Toutefois, nous ajoutons la clé SuppressHashFilter pour filtrer les événements de niveau Information.

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

Dans cet exemple, obtient tous les événements du journal des de l’application au cours des 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 un seul 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
Alias:Cn
Position:Named
Valeur par défaut:Local computer
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Credential

Spécifie un compte d’utilisateur autorisé à effectuer cette action. La valeur par défaut est l’utilisateur actuel.

Tapez un nom d’utilisateur, tel que User01 ou Domain01\User01. Vous pouvez également entrer un objet PSCredential, tel qu’un objet généré par l’applet de commande Get-Credential. 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
Valeur par défaut:Current user
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 ont les règles suivantes :

  • Les clés et les valeurs ne respectent pas la casse.
  • Les caractères génériques 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 Chemin d’accès prend des chemins d’accès aux fichiers journaux , et .
  • LesLogName , Pathet ProviderName clés 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 Data 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> clé représente un champ de données d’événement nommé.

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

Les paires Get-WinEventclé/valeur valides sont les suivantes :

  • = <String[]> LogName
  • ProviderName=<String[]>
  • chemin d’accès=<String[]>
  • mots clés=<Long[]>
  • ID de =<Int32[]>
  • niveau=<Int32[]>
  • = <DateTime> StartTime
  • = <DateTime> EndTime
  • = <SID> UserID
  • = <String[]> de données
  • <named-data>=<String[]>
  • SuppressHashFilter=<Hashtable>
Type:Hashtable[]
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 de de 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 de 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 Supprimer le 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 de schéma de requête et la section Requêtes d’événements XML de sélection d’événements.

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

Type:XmlDocument
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 sélection d’événements.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Force

Obtient les journaux de débogage et d’analyse, en plus d’autres journaux d’événements. Le paramètre Forcer est nécessaire pour obtenir un journal de débogage ou analytique lorsque la valeur du paramètre name inclut des caractères génériques.

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

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ListLog

Spécifie les journaux d’événements. Entrez les noms du journal des événements dans une liste séparée par des virgules. Les caractères génériques sont autorisés. Pour obtenir tous les journaux, utilisez le caractère générique astérisque (*).

Type:String[]
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:True

-ListProvider

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

Entrez les noms des fournisseurs dans une liste séparée 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 le caractère générique astérisque (*).

Type:String[]
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:True

-LogName

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

Note

PowerShell ne limite pas la quantité de journaux que vous pouvez demander. Toutefois, l’applet de commande Get-WinEvent 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 boucle foreach pour itérer dans chaque journal comme suit : Get-WinEvent -ListLog * | ForEach-Object{ Get-WinEvent -LogName $_.Logname }

Type:String[]
Position:0
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:True

-MaxEvents

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

Type:Int64
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 dans le premier ordre.

Ce paramètre est nécessaire pour obtenir des événements à partir de .etl et de fichiers .evt et des journaux de débogage et d’analytique. Dans ces fichiers, les événements sont enregistrés dans l’ordre le plus ancien et les événements peuvent être retournés uniquement dans l’ordre le plus ancien.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 aux fichiers journaux dans une liste séparée par des virgules ou utilisez des caractères génériques pour créer des modèles de chemins d’accès de fichier.

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

Type:String[]
Alias:PSPath
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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 de fournisseurs dans une liste séparée par des virgules ou utilisez des caractères génériques pour créer des modèles de noms de fournisseur.

Un fournisseur de journaux d’événements est un programme ou un service qui écrit des événements dans le journal des événements. Ce n’est pas un fournisseur PowerShell.

Type:String[]
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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 objets EventLogConfiguration.

EventLogRecord

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

ProviderMetadata

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

Notes

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

Les applets de commande Get-WinEvent et Get-EventLog ne sont pas prises en charge dans Windows Pre-installation Environment (Windows PE).