2016-06-14 39 views
0

で使用した場合、私はCSVへのWindows EvtxログファイルをエクスポートするためのPowerShell内Log Parserのを使用しようとしている: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 = @( 'C INTO SELECT *:\ログ\ logs.csv FROM C:\ログ\ logs.evtx -i:EVT -o: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

ありがとう、私は2番目のオプションと一緒に行きました。 – smwk

関連する問題