Как передать вывод Invoke-Expression в строку?

в скрипте PowerShell, я что-то вроде этого:

Invoke-Expression "& `"C:Scriptspsftp.exe`" ftp.blah.com"

Я хочу передать все выходные данные, ошибки и т. д. В строку $output

как я могу это сделать? Я пытался > в конце, а также $output = ... но ни один, кажется, не поймать ошибки и рода.

1 ответов


попробуйте это:

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

использование оператора вызова & является ненужным, как и цитирование пути exe в этом случае, так как путь не содержит пробелов. Если путь содержит пробелы, то его нужно будет процитировать, а затем вам придется использовать оператор вызова. Тем не менее, я не уверен, почему вам нужно использовать Invoke-Expression вообще в данном случае. Следующий будет работать так же хорошо, учитывая ваш пример.

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