2015-07-16 4 views
0

Я обновляю существующее приложение HTA. На странице отображаются записи каждой машины в компании, которая не выполняла резервное копирование (через ibm tsm) в течение последних 3 дней. Я сделал кнопку для каждой записи, которая при нажатии должна выполнить процесс cscript, используя PSEXEC, который запускает exe на целевой машине и передает аргумент. (dsmc.exe INCREMENTAL) Теперь я могу вручную открыть приглашение cmd, используя команду \ Remote cmd для создания удаленного cmd и просто запустить приложение. Но без дополнительного шага создания удаленной подсказки cmd и попыток доVBScript и PSEXEC - удаленное выполнение приложения

PSEXEC \\RemoteMachine cscript.exe "C:\Program Files\tivoli\tsm\baclient\dsmc.exe" INCREMENTAL 

Только результаты с ошибкой. Я знаю, что должно быть возможно дистанционно выполнить эту программу и все равно передать аргумент, но он просто не запускается. И когда я создать CMD запрос удаленной помощи

PSEXEC \\RemoteMachine cmd 

Любые другие строки в сценарии выполнения не выполняются до тех пор, пока я выйти из CMD строки удаленной.

Есть ли секрет PSEXEC, который я не понимаю или способ захватить существующую подсказку cmd (удаленный только что созданный) и передать ей команду выполнить? Пожалуйста, помогите

* Обратите внимание, что это не мой первый скрипт, использующий PSEXEC. Обычно я использую VBScript для создания командного файла локально с содержащимся скриптом PSEXEC, а затем выполняю его. Никогда не удалось получить wsshell.run для работы с PSEXEC.

+0

1. Вполне возможно, что первый параметр 'cscript' является исполняемым файлом? 2. Любая удача, передающая команды через временный файл 'psexec \\ pc @ tmpfile'? – wOxxOm

+0

Вы попробовали переключатель '-d' в команде' PSEXEC', чтобы он не ждал выхода? Кроме того, какова ошибка, которую вы видите? – langstrom

+0

wOxxOm - Это сработает для меня, но не все, запускающие приложение, являются администратором домена и не будут работать для них. Я использовал этот метод раньше, чем в некоторых приложениях, только админы будут использовать. –

ответ

1

Здесь (более или менее) мой синтаксис для использования objShell.Run работать с psexec:

Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c ""%pathToPsexec%\psexec.exe"" -accepteula -s -i -d \\RemoteMachine cmd.exe /k ipconfig",0,True

Это просто пример, но показывает, что вы можете отправить вложенные переключатели и т.д. Также важно понимать коммутаторы psexec.

-accepteula - это согласие на лицензионное соглашение на psexec. это не обязательно, если вы не запускаете его в первый раз, и вы хотите, чтобы он был тихим.
-s - работает как системная учетная запись удаленного компьютера. Если вы не используете это, вам нужно указать -u и -p, если вы хотите запустить интерактивно. В противном случае ваши учетные данные выполняют сетевой вход
-i - указывает на запуск в интерактивном режиме. Это можно опустить или задать сеанс.
-d - не дождаться завершения команды дистанционного управления, прежде чем двигаться дальше

+0

Где вы узнали эту славу? lol Серьезно, хотя, любые рекомендуемые источники для получения дополнительной информации о вложенности psexec-переключателей? Мне нужно будет вернуться по многим старым программам и обновить их. –

+0

Убедитесь, что вы используете последнюю версию psexec. В какой-то момент они фактически внесли изменения в способ отправки переключателей.Раньше он был менее умным и более подверженным ошибкам. Я не помню, где я это узнал, просто проб и ошибок и много поискового робота. – langstrom

+0

Хорошо, только что получил шанс реализовать это, и он работает !!! : D Вы, сэр, потрясающие. Интернет был завоеван дамами и джентльменами! Теперь все мои скрипты, реализующие psexec, очищаются. Woo! –

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