Argumentos de Powershell e LogParser
-
05-07-2019 - |
Pergunta
Estou tentando executar alguns comandos do LogParser da PowerShell, mas estou tendo problemas com a transmissão dos argumentos corretamente, aqui está o corredor do meu script;
D: script smtpLogs logParser LogParser.exe "Selecione os 50 melhores receptoras, contagem (Count () Em%tmpoutput% topreceiversndrall.gif de%tempdir% postall.log onde o remetente como '<>' e o receptor não gostam '%% go-fmtopper %%' por ordem de receptor por contagem () DESC "-I: TSV -IsEPARATOR: SPACE -HEADERROW: OFF -IHEADERFILE:" Header3.TSV "-LineFilter:"+10. "-O: Chart -ChartType: ColumnClustered -config: myscript.js -Charttitle:" Receptores Para mensagens nulas, tudo para %DateGraph %"
Eu li cargas sobre argumentos encapsulantes, mas não consigo descobrir como fazer isso funcionar!
Qualquer ajuda que vocês pudessem fornecer seria muito apreciada.
Obrigado
Solução
Para um parâmetro complexo de string, tente passar no argumento usando PowerShell aqui-as deposas para que você não precisasse se preocupar em escapar de citações únicas/duplas
Atualização1: Eu não conseguia fazer o funcionamento do fomratting, então aqui está a captura de tela.
Atualização2: Consegui formatar o código finalmente.
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% "@
Certifique-se de adicionar uma nova linha entre os apelidos aqui de cordão @" e "@.
Outras dicas
Para sua informação, se você não precisar de nenhuma expansão variável do PowerShell, é melhor usar strings citados aqui. Por exemplo, a seguinte string citada aqui pode causar alguma dor:
@"
$(get-process <some_core_os_process> | stop-process)
"@
onde o seguinte é inofensivo:
@'
$(get-process <some_core_os_process> | stop-process)
'@
Não é provável que sua string aqui contenha algo tão óbvio, mas um $ F simples resolveria para nada, ou seja, desapareceria da string original. A menos que, é claro, $ f tenha sido definido e definido para algo diferente de nulo ou vazio.