Les tâches WMI pour les journaux d’événements obtiennent des données d’événement à partir de fichiers journaux d’événements et effectuent des opérations telles que la sauvegarde ou l’effacement des fichiers journaux. Pour obtenir d’autres exemples, consultez TechNet ScriptCenter à https://www.microsoft.com/technet.
Les exemples de script présentés dans cette rubrique obtiennent des données uniquement à partir de l’ordinateur local. Pour plus d’informations sur l’utilisation du script pour obtenir des données à partir d’ordinateurs distants, consultez Connexion à WMI sur un ordinateur distant.
La procédure suivante décrit comment exécuter un script.
Pour exécuter un script
Copiez le code et enregistrez-le dans un fichier avec une extension .vbs, telle que filename.vbs. Vérifiez que votre éditeur de texte n’ajoute pas d’extension .txt au fichier.
Ouvrez une fenêtre d’invite de commandes et accédez au répertoire où vous avez enregistré le fichier.
Tapez cscript filename.vbs à l’invite de commandes.
Si vous ne pouvez pas accéder à un journal des événements, vérifiez si vous exécutez à partir d’une invite de commandes Avec élévation de privilèges. Certains journaux d’événements, tels que le journal des événements de sécurité, peuvent être protégés par les contrôles d’accès utilisateur (UAC).
Note
Par défaut, cscript affiche la sortie d’un script dans la fenêtre d’invite de commandes. Étant donné que les scripts WMI peuvent produire de grandes quantités de sortie, vous pouvez rediriger la sortie vers un fichier. Tapez cscript filename.vbs > outfile.txt à l’invite de commandes pour rediriger la sortie du script filename.vbs vers outfile.txt.
Le tableau suivant répertorie les exemples de script qui peuvent être utilisés pour obtenir différents types de données à partir de l’ordinateur local.
Comment faire...
Classes ou méthodes WMI
... récupérer des informations sur le journal des événements de sécurité ?
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Backup)}!\\" & strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile " & "Where LogFileName='Application'")
For Each objLogfile in colLogFiles
errBackupLog = objLogFile.BackupEventLog("c:\scripts\application.evt")
WScript.Echo "File saved as c:\scripts\applications.evt"
Next
foreach ($objLogFile in $colLogFiles)
{
[void]$objLogFile.BackupEventlog("c:\scripts\applications.evt")
"File saved as c:\scripts\applications.evt"
}
... sauvegarder un journal des événements plusieurs fois ?
Vérifiez que le fichier de sauvegarde a un nom unique avant d’utiliser le Win32_NTEventlogFile et la méthode BackupEventLog. Le système d’exploitation ne vous permet pas de remplacer un fichier de sauvegarde existant ; vous devez déplacer le fichier de sauvegarde ou le renommer avant de pouvoir réexécuter le script. Vous devrez peut-être inclure le privilège de sauvegarde lors de la connexion à WMI. Pour plus d’informations, consultez exécution d’opérations privilégiées à l’aide de VBScript.
VB
dtmThisDay = Day(Date)
dtmThisMonth = Month(Date)
dtmThisYear = Year(Date)
strBackupName = dtmThisYear & "_" & dtmThisMonth & "_" & dtmThisDay
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Backup)}!\\" & strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile " & "Where LogFileName='Application'")
For Each objLogfile in colLogFiles
objLogFile.BackupEventLog("c:\scripts\" & strBackupName & "_application.evt")
objLogFile.ClearEventLog()
WScript.Echo "File saved: " & strBackupName & "_application.evt"
Next
... déterminer le nombre d’enregistrements dans un journal des événements ?
Utilisez la classe Win32_NTEventlogFile et vérifiez la valeur de la propriété NumberOfRecords.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile " & "Where LogFileName='System'")
For Each objLogFile in colLogFiles
Wscript.Echo objLogFile.NumberOfRecords
Next