2015-07-21 4 views
0

Я считаю, что это то же самое, что и this question, но решение не было предоставлено.PHP - выход PSExec не отображается

У меня есть запрос, который использует Psexec сделать чистый профиль сервера сеанса Оны, и она отлично работает, если положить из командной строки, как показано ниже:

psexec \\profile-server -u username -p password net session 

Он будет показывать баннер Psexec (от STDERR), а затем результаты запроса (из stdout).

Однако, когда я запускаю это из PHP, я могу видеть только канал stderr (как при отправке на экран, так и в файл), но не может видеть stdout вообще. Когда я перенаправляю stdout в файл, файл пуст.

Вот PHP:

<?php 
    $uname_prof = "DOMAIN-USERNAME"; 
    $pw_prof = "DOMAIN-PASSWORD"; 
    $ip = "PROFILE-SERVER"; 

    $query = "psexec.exe \\\\$ip -u $uname_prof -p $pw_prof net session"; 

    $result = exec($query, $output); 

    echo implode('<br>', $output); 
?> 

Спасибо!

+0

побочный комментарий - от ЦМД, если я перейти на C: \ XAMPP \ PHP и выполнить команду «php.exe filename.php», то это показывает штраф stdout (либо в строку cmd, либо в файл) b ut, опять же, не при запуске через веб-браузер. – joshnik

+0

попробуйте с xcmd - http://feldkir.ch/xcmd.htm – npocmaka

ответ

0

, как я понимаю, вы хотите, чтобы объединить потоки вывода, так что вы имеете все выходные из PsExec.exe в переменной $ выходной:

$query = "psexec.exe \\\\$ip -u $uname_prof -p $pw_prof net session 2>&1"; 

, если это так просто поставить 2> & 1 в конце ваша команда

здесь ссылка с подробной информацией о переадресации STDERR Is there a way to redirect ONLY stderr to stdout (not combine the two) so it can be piped to other programs?

+0

Это даст те же результаты, stderr (psexec banner) покажет, но stdout пока не видно. – joshnik

Смежные вопросы