Что нового

[Автоматизация] psexec не выводит текст в поток STDOUT

mafia

Новичок
Сообщения
2
Репутация
0
Необходимо выполнить ряд команд на удалённой машине по локальной сети. Для этого хочу запустить cmd на удалённой машине из Psexec. Но при чтении вывода командного интерпретатора (для анализа подключения и выполнения команд) в строке нет вывода psexec, только вывод cmd. А чтение StdoutRead зацикливается и не завершается, хоть поток пустеет.

Код:
$sPid = Run(@ComSpec, "", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD) ; Запуск cmd
StdinWrite($sPid, "psexec \\" & $sIP & " /u Администратор /p " & $sPass1 & " cmd" & @CRLF)
$sCMD_out = ""     ; Строка для чтения выходного потока консоли
	While 1
		$sCMD_out = StdoutRead($sPid,False,False) ; Читаем поток
		If @error Then ExitLoop                    ; пока текст не кончился
	WEnd


Если пытаюсь запустить psexec напрямую без командного интерпретатора, то ловит только строчку "Microsoft Windows XP [Версия 5.1.2600]", выполнение cmd на удалённой машине сразу завершается.

Код:
$sPsexec = Run('psexec.exe \\' & "192.168.61.131" & ' /u Администратор /p ' & $sPass1 & ' cmd', "", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
$sCMD_out = ""     ; Строка для чтения выходного потока консоли
	While 1
		$sCMD_out = StdoutRead($sPsexec,False,False) ; Читаем поток
		If @error Then ExitLoop                    ; пока текст не кончился
	WEnd


При этом в консоль аутоита psexec текст исправно выводит:
[box]
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

Connecting to 192.168.61.131...

Starting PSEXESVC service on 192.168.61.131...

Connecting with PsExec service on 192.168.61.131...

Starting cmd on 192.168.61.131...

cmd exited on 192.168.61.131 with error code 0.
[/box]
 
Автор
M

mafia

Новичок
Сообщения
2
Репутация
0
Разобрался, в чём дело. Оказалось, нужный мне текст выводится в поток STDERR. А чтение StdoutRead зацикливалось, потому что не закрыл поток STDIN.
 
Верх