Pregunta

Estoy intentando ejecutar algunos comandos de Logparser desde PowerShell pero tengo problemas para pasar los argumentos correctamente. Aquí está el extracto de mi script;

d:\scripting\smtplogs\logparser\logparser.exe "SELECCIONE los 50 receptores principales, CONTAR() EN %TMPOutput% opReceiversNDRALL.gif DESDE %TempDir%\PostAll.log DONDE Al Remitente LE GUSTA '<>' Y Al Receptor NO LE GUSTA '%%go-fmtopper%%' GRUPO POR Receptor ORDEN POR RECUENTO () DESC" -i:TSV -iSeparator:space -headerRow:OFF -iHeaderFile:"header3.tsv" -lineFilter:"+10." -o:CHART -chartType:ColumnClustered -config:MyScript.js -chartTitle:"Receptores para mensajes NULL TODOS para %DateGraph%"

¡He leído mucho sobre encapsular argumentos pero parece que no puedo entender cómo hacer que esto funcione!

Cualquier ayuda que puedan brindarnos será muy apreciada.

Gracias

¿Fue útil?

Solución

Para un parámetro de cadena complejo, intente pasar el argumento usando powershell aquí-cuerdas para que no tengas que preocuparte por escapar de comillas simples/dobles

ACTUALIZACIÓN1:No pude hacer funcionar el formato, así que aquí está la captura de pantalla.alt text

ACTUALIZACIÓN2:Finalmente pude formatear el código.

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

Asegúrese de agregar una nueva línea entre los apodos de la cadena aquí. @" y "@.

Otros consejos

Para su información, si no necesita ninguna expansión de variable de PowerShell, entonces es mejor que use cadenas entre comillas simples. Por ejemplo, la siguiente cadena doble citada aquí puede causarle algo de dolor:

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

donde lo siguiente es inofensivo:

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

No es probable que su cadena aquí contenga algo tan obvio, pero un simple $ f no se resolvería en nada, es decir, desaparecería de la cadena original. A menos que, por supuesto, $ f se haya definido y configurado en algo que no sea nulo o vacío.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top