Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I run a *.exe file from PowerShell

I have a folder at C:\Folder that has files input.xml, output.xml and licensegenerator.exe. Licensegenerator.exe takes variables that we put into input.xml and creates a temporary license for one of our programs using the output.xml file. We typically do this via command line by navigating to the C:\Folder directory, then running the command:

LicenseGenerator.exe "C:\Folder\input.xml" "C:\Folder\output.xml"

I'm attempting to write a script to do the exact same thing in PowerShell, but I'm struggling... Here's what I have:

$inputtest = "C:\Folder\Input.xml"
$outputtest = "C:\Folder\Output.xml"
$licensegen = "C:\Folder\LicenseGenerator.exe"

Invoke-Command $licensegen "$inputtest" "$outputtest"

When I run this, I get the error:

Invoke-Command : A positional parameter cannot be found that accepts argument
'C:\Folder\Output.xml'.
At line:5 char:1
+ Invoke-Command $licengegen "$inputtest" "$outputtest"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-Command], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeCommandCommand

I have also tried running with Invoke-Expression but get the exact same error (except it says "Invoke-Expression" at the beginning). Anybody have any idea what I'm doing wrong here?

like image 217
Christopher Cass Avatar asked Dec 24 '22 18:12

Christopher Cass


1 Answers

You're looking for the call operator (&):

& $licensegen "$inputtest" "$outputtest"

Invoke-Command is essentially for running scriptblocks on other hosts and/or in other user contexts.

like image 186
Ansgar Wiechers Avatar answered Jan 19 '23 07:01

Ansgar Wiechers