JBurace
JBurace

Reputation: 5633

How to pipe output of Invoke-Expression to string?

In a Powershell script, I something like this:

Invoke-Expression "& `"C:\Scripts\psftp.exe`" ftp.blah.com"

I want to pipe all output, errors etc of this to the string $output

How can I do this? I've tried > at the end as well as $output = ... but neither seem to catch errors and the sort.

Upvotes: 11

Views: 29075

Answers (1)

Keith Hill
Keith Hill

Reputation: 201892

Try this:

$output = Invoke-Expression "C:\Scripts\psftp.exe ftp.blah.com 2>&1"

The use of the call operator & is unnecessary as is quoting the exe path in this case since the path doesn't contain spaces. If the path contained spaces, then it would need to be quoted and then you would have to use the call operator. That said, I'm not sure why you need to use Invoke-Expression at all in this case. The following would work just as well given your example.

$output = C:\Scripts\psftp.exe ftp.blah.com 2>&1

Upvotes: 15

Related Questions