Я пытаюсь использовать PSExec для запуска консольного приложения на удаленном компьютере в интерактивном состоянии. Когда я запускаю что-то вроде этого:
PsExec.exe -s -d -i 1 \\MyServer notepad.exe
Он отлично запускает Блокнот. Если я затем запустил это:
PsExec.exe -s -d -i 1 \\MyServer C:\Temp\MyConsoleApp.exe
Он запускает командные окна, но, насколько я могу судить, ничего не делает. Например, когда я запускаю свое консольное приложение локально, оно отображает «сердцебиение» каждые 5 секунд, но когда я запускаю его удаленно, в командном окне ничего не отображается. .Exe отображается как процесс в диспетчере задач. Любые идеи?
Я думаю, вам нужно установить рабочий каталог с помощью -w:
PsExec.exe -s -d -i 1 -w c:\temp \\MyServer MyConsoleApp.exe
http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
Я думаю, вы можете посмотреть идентификатор сеанса для вашего текущего пользователя и передать его как параметр с -i. Например:
PsExec.exe -s -d **-i 2** -w c:\temp \\MyServer MyConsoleApp.exe
Чтобы посмотреть правильный идентификатор сеанса, вы можете открыть cmd и запустить команду: query session Иногда идентификатор сеанса равен 2 для активного пользователя, для которого вы хотите запустить процесс, поэтому попробуйте найти свой правильный идентификатор сеанса и используйте его с -i patameter. Он должен работать. У меня это сработало.
Чтобы найти идентификатор сеанса пользователя, откройте диспетчер задач на этом конкретном компьютере и найдите свое имя пользователя на вкладке «Пользователи».