Search code examples
powershellargumentslogparser

Powershell and logparser arguments


Im trying to run some logparser commands from powershell but Im having issues with passing the arguments across correctly, heres the excert from my script;

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%"

Ive read loads about encapsulating arguments but cant seem to figure out how to make this work!

Any help that you guys could provide would be very appreciated.

Thanks


Solution

  • For a complex string parameter, try to pass the argument using powershell here-strings so that you wouldn't have to worry about escaping single/double quotes

    UPDATE1: I couldn't get the fomratting working so here is the screenshot. alt text

    UPDATE2: I was able to format the code finally.

    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%
    "@
    

    Make sure that you add a new line between the here-string monikers @" and "@.