Powershell和logparser参数

时间:2009-03-09 05:02:05

标签: powershell arguments logparser

我试图从powershell运行一些logparser命令但是我遇到了正确传递参数的问题,这是我脚本中的例外情况;

d:\ scripting \ smtplogs \ logparser \ logparser.exe“SELECT TOP 50 Receiver,COUNT()INTO%TMPOutput%\ TopReceiversNDRALL.gif FROM%TempDir%\ PostAll.log WHERE Sender LIKE'<> ;” AND Receiver NOT LIKE'%% go-fmtopper %%'GROUP BY Receiver ORDER BY COUNT()DESC“-i:TSV -iSeparator:space -headerRow:OFF -iHeaderFile:”header3.tsv“-lineFilter: “+10”。 -o:CHART -chartType:ColumnClustered -config:MyScript.js -chartTitle:“%DateGraph%的NULL消息的接收者”

我已阅读有关封装参数的内容,但似乎无法弄清楚如何使其工作!

非常感谢你们提供的任何帮助。

由于

2 个答案:

答案 0 :(得分:5)

对于复杂的字符串参数,尝试使用powershell here-strings传递参数,这样您就不必担心转义单引号/双引号

UPDATE1 :我无法完成工作,所以这里是截图。 alt text

UPDATE2 :我最终能够格式化代码。

d:\scripting\smtplogs\logparser\logparser.exe @"
SELECT TOP 50 Receiver, COUNT() 
INTO %TMPOutput%\TopReceiversNDRALL.gif 
FROM %TempDir%\PostAll.log 
WHERE Sender LIKE '' 
      AND Receiver NOT LIKE '%%go-fmtopper%%' 
GROUP BY Receiver 
ORDER BY COUNT() DESC" 
-i:TSV 
-iSeparator:space 
-headerRow:OFF 
-iHeaderFile:"header3.tsv" 
-lineFilter:"+10." 
-o:CHART 
-chartType:ColumnClustered 
-config:MyScript.js 
-chartTitle:"Receivers for NULL messages ALL for %DateGraph%
"@

确保在here-string标记 @“”@ 之间添加新行。

答案 1 :(得分:1)

仅供参考,如果您不需要任何PowerShell变量扩展,那么最好使用单引号字符串。例如,以下双引号字符串可能会让您感到悲伤:

@"
$(get-process <some_core_os_process> | stop-process)
"@

以下内容无害:

@'
$(get-process <some_core_os_process> | stop-process)
'@

你的here字符串不太可能包含如此明显的东西,但是简单的$ f会解析为什么,即它会从原始字符串中消失。当然,除非定义$ f并将其设置为null或empty以外的其他内容。