As tarefas WMI para logs de eventos obtêm dados de eventos dos arquivos de log de eventos e executam operações como fazer backup ou limpar arquivos de log. Para obter outros exemplos, consulte o TechNet ScriptCenter em https://www.microsoft.com/technet.
Os exemplos de script mostrados neste tópico obtêm dados somente do computador local. Para obter mais informações sobre como usar o script para obter dados de computadores remotos, confira Como conectar-se ao WMI em um computador remoto.
O procedimento a seguir descreve como executar um script.
Para executar um script
Copie o código e salve-o em um arquivo com a extensão .vbs, por exemplo, nomedoarquivo.vbs. Verifique se o editor de texto não adicionou a extensão .txt ao arquivo.
Abra uma janela do prompt de comando e navegue até o diretório no qual deseja salvar o arquivo.
Digite cscript nomedoarquivo.vbs no prompt de comando.
Se você não conseguir acessar um log de eventos, verifique se está executando a partir de um prompt de comandos com privilégios elevados. Alguns logs de eventos, como o Log de Eventos de Segurança, podem ser protegidos por UAC (Controles de Conta de Usuário).
Observação
Por padrão, o cscript exibe a saída de um script na janela do prompt de comando. Como os scripts do WMI podem gerar uma grande quantidade de saída, pode ser interessante redirecionar essa saída para um arquivo. Digite cscript nomedoarquivo.vbs > arquivodesaida.txt no prompt de comando para redirecionar a saída do script nomedoarquivo.vbs para arquivodesaida.txt.
A tabela a seguir lista exemplos de script que podem ser usados para obter diversos tipos de dados do computador local.
Como fazer...
Classes ou métodos WMI
... a recuperação de informações sobre o log de eventos de segurança?
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"
}
... o backup de um log de eventos mais de uma vez?
Verifique se o arquivo de backup tem um nome exclusivo antes de usar o Win32_NTEventlogFile e o método BackupEventLog. O sistema operacional não permite substituir um arquivo de backup existente. Você deverá mover o arquivo de backup ou renomeá-lo antes de poder executar o script novamente. Talvez seja necessário incluir o privilégio de Backup ao se conectar ao WMI. Para obter mais informações, confira Executar operações privilegiadas usando 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
... a determinação do número de registros em um log de eventos?
Use a classe Win32_NTEventlogFile e verifique o valor da propriedade 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