2016-05-27 3 views
0

J'essaie de passer quelques arguments logparser de powershell, juste parce que je dois obtenir la date juste pour pouvoir obtenir les bonnes données au bon moment. Mais logparser n'acceptera pas le code de powershell, mais si je l'exécute directement à partir de cmd sans la variable de date nécessaire cela fonctionne.Les arguments Powershell et logparser dans herestring ne fonctionnent pas

$date = Get-Date -UFormat "%y%m%d" 
$exe = "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" 
$herestring = @" 
"SELECT 
date AS Date, 
time as Time, 
s-ip as Server-IP, 
cs-uri-stem as Request-URI 
FROM C:\Local\temp\S0000\u_ex$date*.log 
WHERE cs-uri-stem LIKE '%/Microsoft-Server-ActiveSync/%' 
-i:IISW3C -o:csv -q:off >c:\Local\test\Activesynccalls1.csv 
"@ 
start-process $exe -ArgumentList $herestring 

Lors du passage à ce logparser, logparser se plaint de "Error: Syntax Error: extra token(s) after query: '-i:IISW3C' mais quand j'ajouter un quotationmark après ...tiveSync/%'". il ne prendra même pas l'argument du tout, mais en utilisant le même argument dans cmd cela fonctionne très bien.

Répondre

1

Cela ne fonctionnera pas pour plusieurs raisons:

  • Un herestring ne crée pas de string[] qui est ce que -ArgumentList veut
  • La citation devant le SELECT est superflu. La redirection à l'intérieur du -ArgumentList ne fonctionnera pas. Start-Process ne démarre pas un shell cmd mais, le processus directement.

En outre, vous n'avez pas besoin Start-Process du tout, mais peut directement exécuter LogParser.exe (vous pouvez, mais il est pas nécessaire ici).

est quelque chose comme ce que vous pouvez essayer ceci:

$date = Get-Date -UFormat "%y%m%d" 
$query = @" 
SELECT date AS Date, time as Time, s-ip as Server-IP, cs-uri-stem as Request-URI 
FROM C:\Local\temp\S0000\u_ex$date*.log 
WHERE cs-uri-stem LIKE '%/Microsoft-Server-ActiveSync/%' 
"@ 

& "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" $query -i:IISW3C -o:csv -q:off > c:\Local\test\Activesynccalls1.csv 
+0

Merci beaucoup. Cela fonctionne comme je le veux: D Wich signifie que je peux aussi étendre la requête autant que je veux si j'ai besoin :) Merci! –