Question

J'essaie d'exécuter des commandes logparser à partir de powershell, mais j'ai des problèmes pour transmettre correctement les arguments, voici l'extrait de mon script;

d: \ scripting \ smtplogs \ logparser \ logparser.exe " Récepteur SELECT TOP 50, COUNT () DANS% TMPOutput% \ TopReceiversNDRALL.gif FROM% TempDir% \ PostAll.log WHERE Sender LIKE '< >' ET Le récepteur ne ressemble pas à '%% go-fmtopper %%' GROUPE PAR Récepteur ORDER BY COUNT () DESC & Quot; -i: TSV -iSeparator: space -headerRow: OFF -iHeaderFile: & "; header3.tsv &"; -lineFilter: " +10. " -o: CHART -chartType: ColumnClustered -config: MyScript.js -chartTitle: " Récepteurs pour les messages NULL ALL pour% DateGraph% "

J'ai lu des tonnes d'articles sur les arguments d'encapsulation, mais je n'arrive pas à comprendre comment faire pour que cela fonctionne!

Toute aide que vous pourriez fournir serait très appréciée.

Merci

Était-ce utile?

La solution

Pour un paramètre de chaîne complexe, essayez de passer l'argument à l'aide de powershell here-strings afin que vous ne craigniez pas d'échapper aux guillemets simples / doubles

UPDATE1 : Je n’arrivais pas à faire fonctionner le formatage, voici la capture d’écran. texte alt

UPDATE2 : J'ai finalement pu formater le code.

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

Assurez-vous d'ajouter une nouvelle ligne entre les monikers @ & "; et &" @ . .

.

Autres conseils

Pour votre information, si vous n'avez besoin d'aucune extension de variable PowerShell, il est préférable d'utiliser des chaînes entre guillemets simples ici. Par exemple, la chaîne double entre guillemets peut vous causer des problèmes:

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

où ce qui suit est inoffensif:

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

Il est peu probable que votre chaîne ici contienne quelque chose d'aussi évident, mais un simple $ f ne résoudrait rien, c'est-à-dire qu'elle disparaîtrait de la chaîne d'origine. Sauf si, bien sûr, $ f a été défini et défini sur autre chose que null ou vide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top