与 PowerShell 一起使用时出现 Logparser 错误
Logparser error when used with PowerShell
我正在尝试使用 PowerShell 中的日志解析器将 Windows Evtx 日志文件导出到 CSV:
$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。我尝试将路径放在单引号中并 运行将其从与日志相同的目录中获取,但它一直返回相同的错误。
您需要保留查询字符串周围的双引号,否则生成的进程不会将其识别为单个参数。
将查询字符串(带双引号)放在单引号中可能有效:
$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
我正在尝试使用 PowerShell 中的日志解析器将 Windows Evtx 日志文件导出到 CSV:
$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。我尝试将路径放在单引号中并 运行将其从与日志相同的目录中获取,但它一直返回相同的错误。
您需要保留查询字符串周围的双引号,否则生成的进程不会将其识别为单个参数。
将查询字符串(带双引号)放在单引号中可能有效:
$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