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

Foi útil?

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.alt text

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top