2016-06-14 9 views
0

Я пытаюсь использовать Log Parser в PowerShell экспортировать файл журнала Windows, Evtx в CSV:LogParser ошибка при использовании PowerShell

$logparser = "c:\program files (x86)\Log Parser 2.2\logparser.exe" 
$allArgs = ("SELECT * INTO c:\logs\logs.csv FROM c:\logs\logs.evtx", "-i:evt", "-o:csv") 
$ps = Start-Process -FilePath $logparser -ArguementList $allArgs -Wait -Passthru -NoNewWindow; 
$ps.WaitForExit() 
$ps.ExitCode; 

Но когда я запускаю это я получаю сообщение об ошибке:

Error: detected extra argument "*" after query

Код ошибки: 13. Я попытался поместить пути в одинарные кавычки и запустить его из того же каталога, что и журналы, но он продолжает возвращать ту же ошибку.

+0

делает '$ allArgs = @ ('SELECT * INTO C: \ журналы \ logs.csv FROM C: \ Logs \ logs.evtx -i: ЭВТ -о: CSV')' работы? – whatever

+0

К сожалению, нет, я попробовал несколько способов, но он всегда возвращается с той же ошибкой, – smwk

ответ

2

Вам нужно сохранить двойные кавычки вокруг строки запроса, иначе она не будет распознана как единственный аргумент порожденным процессом.

Ввод строки запроса (двойные кавычки) в одинарных кавычках может работать:

$allArgs = '"SELECT * INTO c:\logs\logs.csv FROM c:\logs\logs.evtx"', 
      "-i:evt", 
      "-o:csv" 

Однако гораздо более простое решение проблемы было бы избежать Start-Process полностью и использовать оператор вызова (&) вместо :

$logparser = "c:\program files (x86)\Log Parser 2.2\logparser.exe" 
$query = "SELECT * INTO c:\logs\logs.csv FROM c:\logs\logs.evtx" 

& $logparser -i:evt -o:csv $query 
+0

Спасибо, я пошел со вторым вариантом, и он отлично работал. – smwk

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

  • Нет связанных вопросов^_^