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?
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
"@
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.
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"