Как записать вывод в переменную, а не в лог-файл? - PullRequest
32 голосов
/ 08 декабря 2011

Это записывает вывод в файл журнала:

& $Env:WinDir\system32\inetsrv\appcmd.exe >test.log

Но что, если я хочу сохранить вывод в строковой переменной, чтобы использовать его в теле письма?

Я попробовал это без всякой удачи ..

$test = ""
& $Env:WinDir\system32\inetsrv\appcmd.exe >$test

Write-Host $test

Ответы [ 2 ]

37 голосов
/ 08 декабря 2011

Вы должны сделать:

$test = & $Env:WinDir\system32\inetsrv\appcmd.exe

Если вы также хотите перенаправить ошибку, добавьте 2>&1 в конце.

10 голосов
/ 13 января 2016

Захват вывода исполняемого файла так же прост, как,

$cmdOutput = &"Application.exe" 2>&1

2> & 1 - включает поток ошибок в вывод

Тип возвращаемого значенияисполняемый файл в PowerShell представляет собой массив строк .В случае регистрации таких выходных данных

Write-Host $cmdOutput

будет выводить строки массива в выходной поток, разделенные пробелами

Чтобы напечатать их в виде строки на строку, выберите

Write-Output $cmdOutput

или

$cmdOutput = &"Application.exe" | Out-String
Write-Host $cmdOutput
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...