2010-06-23 2 views
1

Я использую следующую функцию PowerShell для анализа журналов событий, которые были сохранены локально с удаленной машины. К сожалению, я не могу для жизни понять, как сбрасывать в другой формат, а не только на консольное окно.Выход LogParser и Powershell

Когда я вставляю INTO заявления в мой SQL запрос я получаю следующее сообщение об ошибке:

Exception призывающего «Выполнить» с «2» аргументом (ы): «Не могу указать INTO-объект при вызове Execute() [Параметр неверный.] "

Любая помощь с благодарностью.

Function Parse-Event-Logs 
{ 

$logtypes = "Application","System","Security" 
foreach ($logtype in $logtypes) 
{ 
$log_file = $LogsArchive + "\" + $folder + "\" + $logtype + ".evt" 
$log_parser = new-object -comobject MSUtil.LogQuery 
$log_type = new-object -comobject MSUtil.LogQuery.EventLogInputFormat 
$log_type.resolvesids = $true 
$log_type.fulltext = $true 
$output_type = new-object -comobject MSUtil.LogQuery.NativeOutputFormat 
$log_query = "SELECT * FROM $log_file WHERE EventTypeName = 'Error event' OR EventTypeName = 'Warning event'" 

$log_recs = $log_parser.execute($log_query,$log_type) 
try{ 
do{ 
$lp_return = @{} 
$log_entry = $log_recs.getrecord() 

$lp_return.add("Index",$log_entry.getvalue("RecordNumber")) 
$lp_return.add("EntryType",$log_entry.getvalue("EventTypeName")) 
$lp_return.add("EventID",$log_entry.getvalue("EventID")) 
$lp_return.add("Message",$log_entry.getvalue("Message")) 
$lp_return.add("Category",$log_entry.getvalue("EventCategoryName")) 
$lp_return.add("CategoryNumber",$log_entry.getvalue("EventCategory")) 
$lp_return.add("ReplacementStrings",$log_entry.getvalue("Strings")) 
$lp_return.add("Source",$log_entry.getvalue("SourceName")) 
$lp_return.add("TimeGenerated",$log_entry.getvalue("TimeGenerated")) 
$lp_return.add("TimeWritten",$log_entry.getvalue("TimeWritten")) 
$lp_return.add("UserName",$log_entry.getvalue("SID")) 
$lp_return | new-hashobject 

$log_recs.movenext() 
} while ($log_recs.atend() -eq $false) 
} 

Catch {Write-Host "Event log is empty"} 
} 
} 
+0

Вам повезло с помощью ExecuteBatch? –

+0

Кстати, вы видели это: http://muegge.com/blog/?p=65 –

+0

Спасибо Keith, ExecuteBatch сделал это. – Christopher

ответ

1

ОК, преобразовывая комментарий в ответ. :-)

Используйте метод ExecuteBatch вместо метода Execute. ExecuteBatch позволяет передавать входные и выходные типы.

Смежные вопросы