Exécution d'un exe avec des arguments à L'aide de Powershell

c'est Ce que je veux exécuter:

c:Program fichiers (x86)Sequel ViewPointviewpoint.exe / Setvar ((POSTSTR $POSTSTR) (POSTEND $POSTEND)) /G:C:viewpointfile.vpt / D:C:($BEGDATE to $TODDATE).xls

C'est ce que j'ai essayé:

$a = " / Setvar ((POSTSTR $POSTSTR) (POSTEND $POSTEND))"

$b = " /G:C:viewpointfile.vpt"

$c = " / D:C:($BEGDATE to $TODDATE).xls "

$ Viewpoint = "c:Program fichiers (x86)Sequel ViewPointviewpoint.exe 151910920"

&$point de Vue de $a $b $c

quand j'exécute ceci je reçois une erreur disant:

Fichier C:viewpointfile.vpt " / D: C: ($BEGDATE to $ TODDATE).xls", pas trouvé!!!

Je ne suis pas sûr d'où il tire les citations supplémentaires. Si je dirige la commande avec juste $a et $b, ça ira.

Toute aide serait grandement appréciée. Merci! :)

mise à Jour

manojlds suggéré echoargs donc ici, il la sortie de celui-ci:

&./ echoargs.$exe point de vue de $a $b $c

Arg 0 is C:Program fichiers (x86)Sequel ViewPointviewpoint.exe

Arg 1 is /Setvar ((POSTSTR 20101123) (POSTEND 20111123))

Arg 2 is /G:C:viewpointfile.vpt

Arg 3 est /D:C:(2010-11-23 à 2011-11-23 PM).xls

Il semble que tous les arguments sont transmis correctement. Quand je lance cette commande dans cmd.exe il exécute parfaitement. Donc quelque chose sur Powershells end doit gâcher la sortie.

y a-t-il une autre solution? A propos de L'exécution de cette commande avec Powershell?

4
demandé sur Chris 2011-11-24 00:42:41

3 réponses

J'ai trouvé la méthode bloguée par Joel Bennett la plus fiable quand on appelle les commandes héritées

http://huddledmasses.org/the-problem-with-calling-legacy-or-native-apps-from-powershell /

j'ai dû utiliser ceci en appelant LogParser de Powershell:

set-alias logparser "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe"
start-process -NoNewWindow -FilePath logparser -ArgumentList @"
"SELECT * INTO diskspaceLP FROM C:\Users\Public\diskspace.csv" -i:CSV -o:SQL -server:"Win7boot\sql1" -database:hsg -driver:"SQL Server" -createTable:ON
"@
4
répondu Chad Miller 2011-11-24 01:46:12

Get echoargs.exe from Powershell community extension ( http://pscx.codeplex.com / ) pour comprendre les arguments que Powershell envoie à votre exe.

$a = "/Setvar((POSTSTR $POSTSTR)(POSTEND $POSTEND))"
$b = "/G:C:\viewpointfile.vpt"
$c = "/D:C:($BEGDATE to $TODDATE).xls"
$echoArgs = ".\echoargs.exe"
&$echoArgs $a $b $c

vous semblez passer les arguments fine cependant, mais le point de vue.exe semble être agissant. Je ne vois pas ce que vous faites ici:

$c = "/D:C:($BEGDATE to $TODDATE).xls"

après C: il n'y a pas de \ et aussi votre message d'erreur que vous avez collé montre $BEGDATE et $TODDATE mot à mot, ce qui n'est pas possible car ils auraient été substitués avec leurs valeurs.

4
répondu manojlds 2011-11-23 21:29:11

si Je ne peux pas exécuter une commande comme celle-ci, cela fonctionne généralement pour moi avec Invoke-Expression. Ne peut pas tester la vôtre.

Invoke-Expression "$viewpoint $a $b $c"
4
répondu Tom 2011-11-24 07:30:50