我试图从powershell中传递逻辑解析参数,仅仅是因为我需要正确的日期才能在正确的时间获得正确的数据。但是日志解析器不会接受powershell中的代码,但是如果我直接从cmd运行它而没有所需的日期变量,它就能工作。
$date = Get-Date -UFormat "%y%m%d"
$exe = "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe"
$herestring = @"
"SELECT
date AS Date,
time as Time,
s-ip as Server-IP,
cs-uri-stem as Request-URI
FROM C:\Local\temp\S0000\u_ex$date*.log
WHERE cs-uri-stem LIKE '%/Microsoft-Server-ActiveSync/%'
-i:IISW3C -o:csv -q:off >c:\Local\test\Activesynccalls1.csv
"@
start-process $exe -ArgumentList $herestring 当将它传递给日志解析器时,日志解析器会抱怨"Error: Syntax Error: extra token(s) after query: '-i:IISW3C',但是当我在...tiveSync/%'"后面添加引号时。它甚至根本不接受参数,但是当在cmd中使用相同的参数时,它工作得很好。
发布于 2016-05-27 11:15:18
由于以下几个原因,这是行不通的:
string[],这正是-ArgumentList想要的。SELECT之前的报价是多余的。-ArgumentList内部的重定向不起作用。Start-Process不启动shell cmd,而是直接启动进程。而且,您根本不需要Start-Process,但是可以直接运行LogParser.exe (您可以,但这里没有必要)。
你可以尝试这样的方法:
$date = Get-Date -UFormat "%y%m%d"
$query = @"
SELECT date AS Date, time as Time, s-ip as Server-IP, cs-uri-stem as Request-URI
FROM C:\Local\temp\S0000\u_ex$date*.log
WHERE cs-uri-stem LIKE '%/Microsoft-Server-ActiveSync/%'
"@
& "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" $query -i:IISW3C -o:csv -q:off > c:\Local\test\Activesynccalls1.csvhttps://stackoverflow.com/questions/37480408
复制相似问题