powershell envoie plusieurs paramètres à une commande externe
Je suis en train de lancer un externe exe à partir d'un script powershell.
Cet exe veut 4 paramètres.
J'ai essayé tous les combo de invoke-item, invoke-command & "C:\program files\mycmd.exe myparam", fait un raccourci dans C:\ pour se débarrasser des espaces dans le chemin d'accès.
Je peux le faire fonctionner avec un seul paramètre, mais pas plus. Je reçois plusieurs erreurs.
Pour résumer, comment faites-vous envoyer des 4 paramètres pour un exe?
source d'informationauteur falkaholic
Vous devez vous connecter pour publier un commentaire.
Il est préférable si elle est affichée dans la main. Une fois que vous voyez ce qui se passe, vous pouvez le raccourcir par juste en utilisant des virgules entre chaque argument.
... abrégée:
Dans le cas simple, le passage d'arguments à une native exe est aussi simple que d'utiliser une commande intégrée:
Vous pouvez rencontrer des problèmes lorsque vous spécifiez un chemin d'accès complet à un fichier EXE, et que le chemin d'accès contient des espaces. Par exemple, si PowerShell voit ceci:
Il interprète la commande à "C:\Program" et "Files\Microsoft" en tant que premier paramètre, "SDKs\Windows\v7.0\Bin\sn.exe" comme second paramètre, etc. La solution simple est de mettre le chemin dans une chaîne de caractères utiliser l'invocation de l'opérateur
&
d'invoquer la commande nommée par le chemin d'accès par exemple:La zone suivante, nous nous heurtons à des problèmes avec, c'est quand les arguments sont complexes et/ou de l'utilisation des caractères qui PowerShell interprète spécialement p. ex.:
Cela ne fonctionne pas et on peut corriger cela en utilisant un outil de la PowerShell Communauté Extensions appelé
echoargs.exe
qui vous montre exactement comment le natif EXE reçoit les arguments à partir de PowerShell.Noter qu'avec Arg3
$(user)
est interprétée & évalué par PowerShell et les résultats dans une chaîne vide. Vous pouvez résoudre ce problème et un bon nombre de questions similaires par l'utilisation des guillemets simples au lieu de double qoutes, sauf si vous avez vraiment besoin de PowerShell pour évaluer une variable par exemple:Si tout le reste échoue, utilisez un ici et chaîne Start-Processus comme suit:
Remarque si vous utilisez PSCX 1.2 vous aurez besoin de préfixe Start-Processus comme le
Microsoft.PowerShell.Management\Start-Process
à utiliser PowerShell est intégré dans les Processus de cmdlet.