首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell和日志解析器参数在此字符串中不起作用

Powershell和日志解析器参数在此字符串中不起作用
EN

Stack Overflow用户
提问于 2016-05-27 09:56:13
回答 1查看 176关注 0票数 0

我试图从powershell中传递逻辑解析参数,仅仅是因为我需要正确的日期才能在正确的时间获得正确的数据。但是日志解析器不会接受powershell中的代码,但是如果我直接从cmd运行它而没有所需的日期变量,它就能工作。

代码语言:javascript
复制
$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中使用相同的参数时,它工作得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-27 11:15:18

由于以下几个原因,这是行不通的:

  • 下面的字符串不会创建string[],这正是-ArgumentList想要的。
  • SELECT之前的报价是多余的。
  • -ArgumentList内部的重定向不起作用。Start-Process不启动shell cmd,而是直接启动进程。

而且,您根本不需要Start-Process,但是可以直接运行LogParser.exe (您可以,但这里没有必要)。

你可以尝试这样的方法:

代码语言:javascript
复制
$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.csv
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37480408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档