Argomenti Powershell e logparser
-
05-07-2019 - |
Domanda
Sto cercando di eseguire alcuni comandi logparser da PowerShell ma sto avendo problemi con il passaggio corretto degli argomenti, ecco l'espressione dal mio script;
d: \ scripting \ smtplogs \ logparser \ logparser.exe " SELEZIONA IL MIGLIORE 50 Ricevitore, COUNT () IN% TMPOutput% \ TopReceiversNDRALL.gif FROM% TempDir% \ PostAll.log DOVE Mittente 'lt &; >' E IL ricevitore NON MI PIACE '%% go-fmtopper %%' Raggruppa per ricevitore ORDINA PER CONTEGGIO () DESC & Quot; -i: TSV -iSeparator: spazio -headerRow: OFF -iHeaderFile: " header3.tsv " &: -LineFilter.; & Quot +10 quot; -o: CHART -chartType: ColumnClustered -config: MyScript.js -chartTitle: " Ricevitori per messaggi NULL TUTTI per% DateGraph% "
Ho letto un sacco di argomenti incapsulati ma non riesco a capire come farlo funzionare!
Qualsiasi aiuto che voi ragazzi potreste fornire sarebbe molto apprezzato.
Grazie
Soluzione
Per un parametro stringa complesso, prova a passare l'argomento usando powershell stringhe qui in modo da non doverti preoccupare di sfuggire alle virgolette singole / doppie
UPDATE1 : non sono riuscito a far funzionare il fomratting, quindi ecco lo screenshot.
UPDATE2 : Finalmente sono riuscito a formattare il codice.
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% "@
Assicurati di aggiungere una nuova linea tra i moniker qui stringa @ " e " @ .
Altri suggerimenti
Cordiali saluti, se non hai bisogno di alcuna espansione di PowerShell, allora stai meglio usando stringhe qui tra virgolette singole. Ad esempio, la seguente stringa tra virgolette doppie potrebbe causare problemi:
@"
$(get-process <some_core_os_process> | stop-process)
"@
dove quanto segue è innocuo:
@'
$(get-process <some_core_os_process> | stop-process)
'@
Non è probabile che la tua stringa qui contenga qualcosa di così ovvio, ma un semplice $ f si risolverà in nulla, cioè scomparirebbe dalla stringa originale. A meno che, ovviamente, $ f non sia stato definito e impostato su qualcosa di diverso da null o vuoto.